public async Task <IActionResult> SendUserMessageToBot([FromQuery] string SpeechResult, [FromQuery] double Confidence, [FromQuery] string CallSid) { var activityToSend = new Activity { From = new ChannelAccount("TwilioUserId", "TwilioUser"), Type = ActivityTypes.Message, Text = SpeechResult }; await _botConnector.SendMessageToBotAsync(activityToSend); //Preventing the call from hanging up var response = new VoiceResponse(); response.Pause(15); //DEBUG response.Say("ProxiCall's got disconnected", voice: "alice", language: Say.LanguageEnum.EnUs); return(TwiML(response)); }
public async Task <IActionResult> ReceiveCall([FromQuery] string CallSid, [FromQuery] string From, [FromQuery] string To) { var audioToDelete = Directory.GetFiles(_hostingEnvironment.WebRootPath + "/audio"); foreach (var file in audioToDelete) { System.IO.File.Delete(file); } var xmlToDelete = Directory.GetFiles(_hostingEnvironment.WebRootPath + "/xml"); foreach (var file in xmlToDelete) { System.IO.File.Delete(file); } _botConnector = new BotConnector(_directlineConfig, CallSid); _ = System.Threading.Tasks.Task.Run(() => _botConnector.ReceiveMessagesFromBotAsync(HandleIncomingBotMessagesAsync)); var activity = new Activity { From = new ChannelAccount("TwilioUserId", "TwilioUser"), Type = ActivityTypes.Message, Text = string.Empty, Entities = new List <Entity>() }; var phoneNumber = string.Empty; if (From != _twilioAppConfig.TwilioPhoneNumber) { //User Phone Number during Inbound Call phoneNumber = From.Substring(1); } else { //User Phone Number during Outbound Call phoneNumber = To.Substring(1); } var entity = new Entity { Properties = new JObject { { "firstmessage", JToken.Parse(phoneNumber) } } }; activity.Entities.Add(entity); await _botConnector.SendMessageToBotAsync(activity); //Preventing the call from hanging up (/receive needs to return a TwiML) var response = new VoiceResponse(); response.Say("", voice: "alice", language: Say.LanguageEnum.FrFr); response.Pause(15); return(TwiML(response)); }