-
Notifications
You must be signed in to change notification settings - Fork 302
/
Twilio.cs
92 lines (82 loc) · 3.32 KB
/
Twilio.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Web;
using Twilio;
namespace Twilio.WebMatrix
{
/// <summary>
/// A set of Twilio helpers for WebMatrix sites
/// </summary>
public class Twilio
{
/// <summary>
/// The AccountSid to authenticate with when making requests
/// </summary>
public static string AccountSid { get; set; }
/// <summary>
/// The AuthToken to authenticate with when making requests
/// </summary>
public static string AuthToken { get; set; }
/// <summary>
/// Send an SMS message
/// </summary>
/// <param name="from">The number to send the message from</param>
/// <param name="to">The number to send the message to</param>
/// <param name="body">The contents of the message, up to 160 characters</param>
/// <param name="statusCallbackUrl">The URL to notify of the message status</param>
/// <returns>An SMSMessage Instance resource</returns>
public static SMSMessage SendSms(string from, string to, string body, string statusCallbackUrl)
{
CheckForCredentials();
var twilio = new TwilioRestClient(AccountSid, AuthToken);
return twilio.SendSmsMessage(from, to, body, statusCallbackUrl);
}
/// <summary>
/// Initiate a new outgoing call
/// </summary>
/// <param name="from">The phone number to call from</param>
/// <param name="to">The phone number to call to</param>
/// <param name="url">The TwiML URL to use for controlling this call</param>
/// <param name="statusCallback">The URL to notify upon completion of the call</param>
/// <param name="statusCallbackMethod">The HTTP method to use when requesting the statusCallback URL</param>
/// <param name="fallbackUrl">The URL to request upon encountering an in-call error</param>
/// <param name="fallbackMethod">The HTTP method to use when requesting the fallbackUrl</param>
/// <param name="ifMachine">The action to take when encountering an answering machine</param>
/// <param name="sendDigits">The DTMF touch tone digits to transmit when the call is answered</param>
/// <param name="timeout">The amount of time to allow a call to ring before ending</param>
/// <returns>A Call Instance resource</returns>
public static Call MakeCall(string from, string to, string url, string statusCallback,
string statusCallbackMethod, string fallbackUrl, string fallbackMethod,
string ifMachine, string sendDigits, int? timeout = null)
{
CheckForCredentials();
var twilio = new TwilioRestClient(AccountSid, AuthToken);
var options = new CallOptions();
options.From = from;
options.To = to;
if (!string.IsNullOrEmpty(url))
{
options.Url = url;
}
else
{
options.Url = HttpContext.Current.Request.Url.ToString();
}
options.StatusCallback = statusCallback;
options.StatusCallbackMethod = statusCallbackMethod;
options.FallbackUrl = fallbackUrl;
options.FallbackMethod = fallbackMethod;
options.IfMachine = ifMachine;
options.SendDigits = sendDigits;
options.Timeout = timeout;
return twilio.InitiateOutboundCall(options);
}
private static void CheckForCredentials()
{
if (string.IsNullOrEmpty(AccountSid) || string.IsNullOrEmpty(AuthToken))
{
throw new ApplicationException(@"Twilio credentials have not been specified. Verify Twilio.AccountSid
and Twilio.AuthToken have been set to the values from your account dashboard.");
}
}
}
}