2019-06-06 14:41:16 +00:00
|
|
|
using Uri = System.Uri;
|
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
namespace ASC.VoipService.Twilio;
|
|
|
|
|
|
|
|
public class TwilioVoipSettings : VoipSettings
|
2019-06-06 14:41:16 +00:00
|
|
|
{
|
2022-02-16 14:07:58 +00:00
|
|
|
public TwilioVoipSettings(
|
|
|
|
AuthContext authContext,
|
|
|
|
TenantUtil tenantUtil,
|
|
|
|
SecurityContext securityContext,
|
|
|
|
BaseCommonLinkUtility baseCommonLinkUtility) :
|
|
|
|
base(authContext, tenantUtil, securityContext, baseCommonLinkUtility)
|
|
|
|
{ }
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
public TwilioVoipSettings(
|
|
|
|
Uri voiceUrl,
|
|
|
|
AuthContext authContext,
|
|
|
|
TenantUtil tenantUtil,
|
|
|
|
SecurityContext securityContext,
|
|
|
|
BaseCommonLinkUtility baseCommonLinkUtility) :
|
|
|
|
this(authContext, tenantUtil, securityContext, baseCommonLinkUtility)
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(voiceUrl.Query)) return;
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
JsonSettings = Encoding.UTF8.GetString(Convert.FromBase64String(HttpUtility.UrlDecode(HttpUtility.ParseQueryString(voiceUrl.Query)["settings"])));
|
|
|
|
}
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
public TwilioVoipSettings(string settings, AuthContext authContext) : base(settings, authContext)
|
|
|
|
{
|
|
|
|
}
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
public override string Connect(bool user = true, string contactId = null)
|
|
|
|
{
|
|
|
|
var result = GetEcho("", user);
|
|
|
|
if (!string.IsNullOrEmpty(contactId))
|
2019-06-06 14:41:16 +00:00
|
|
|
{
|
2022-02-16 14:07:58 +00:00
|
|
|
result += "&ContactId=" + contactId;
|
2019-06-06 14:41:16 +00:00
|
|
|
}
|
2022-02-16 14:07:58 +00:00
|
|
|
return result;
|
|
|
|
}
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
public override string Redirect(string to)
|
|
|
|
{
|
|
|
|
return GetEcho("redirect") + "&RedirectTo=" + to;
|
|
|
|
}
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
public override string Dequeue(bool reject)
|
|
|
|
{
|
|
|
|
return GetEcho("dequeue") + "&Reject=" + reject;
|
|
|
|
}
|
2019-06-06 14:41:16 +00:00
|
|
|
|
2022-02-16 14:07:58 +00:00
|
|
|
private string GetEcho(string method, bool user = true)
|
|
|
|
{
|
|
|
|
return new TwilioResponseHelper(this, BaseCommonLinkUtility.GetFullAbsolutePath(""), AuthContext, TenantUtil, SecurityContext).GetEcho(method, user);
|
2019-06-06 14:41:16 +00:00
|
|
|
}
|
|
|
|
}
|