Created
September 16, 2020 17:38
-
-
Save gsuttie/92ed20b1cd1f2e0d87e3e2e090ce4708 to your computer and use it in GitHub Desktop.
retrudurablefunction3times
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[FunctionName("A_MakeCall2")] | |
public static string MakeCall2([ActivityTrigger] CallInfo callInfo, [Table("MadeCalls2", "AzureWebJobStorage")] out CallDetails calldetails, ILogger log) | |
{ | |
log.LogWarning($"MakeCall {callInfo.Numbers}"); | |
var madeCallId = Guid.NewGuid().ToString("N"); | |
calldetails = new CallDetails | |
{ | |
PartitionKey = "MadeCalls", | |
RowKey = madeCallId, | |
OrchestrationId = callInfo.InstanceId | |
}; | |
string accountSid = Environment.GetEnvironmentVariable("accountSid"); | |
string authToken = Environment.GetEnvironmentVariable("authToken"); | |
TwilioClient.Init(accountSid, authToken); | |
// *********************************************************************************************************** | |
//TODO figure out how best to call this and loop thru the numbers instead of hardcoding the first number below | |
// *********************************************************************************************************** | |
//var to = new PhoneNumber(callInfo.Numbers[0]); | |
//var to = new PhoneNumber(callInfo.NumberCalled); | |
var from = new PhoneNumber(Environment.GetEnvironmentVariable("twilioDemoNumber")); | |
log.LogWarning($"InstanceId {callInfo.InstanceId}"); | |
var myCallInfo = callInfo; | |
foreach (var number in myCallInfo.Numbers) | |
{ | |
for (int retryCount = 1; retryCount <= myCallInfo.Attempts; retryCount++) | |
{ | |
log.LogWarning($"The {number} has been called {retryCount} times"); | |
// TODO be careful with the code at the end of this string as it changes | |
//var statusCallbackUri = new Uri(string.Format(Environment.GetEnvironmentVariable("statusCallBackUrl"), madeCallId)); | |
var statusCallbackUri = new Uri(string.Format(Environment.GetEnvironmentVariable("statusCallBackUrl"), callInfo.InstanceId)); | |
log.LogWarning($"statusCallbackUri {statusCallbackUri}"); | |
var statusCallbackEvent = new List<string> { "answered" }; | |
var to = new PhoneNumber(number); | |
log.LogWarning($"About to make a call to {to} from {from}."); | |
var call = CallResource.Create( | |
to, | |
from, | |
url: new Uri("http://demo.twilio.com/docs/voice.xml"), | |
statusCallback: statusCallbackUri, | |
statusCallbackMethod: Twilio.Http.HttpMethod.Post, | |
statusCallbackEvent: statusCallbackEvent); | |
} | |
} | |
//await Task.Delay(100); | |
return madeCallId; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment