DocSpace-buildtools/common/ASC.VoipService/Twilio/TwilioVoipSettings.cs

57 lines
1.8 KiB
C#
Raw Normal View History

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
}
}