예제 #1
0
        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));
        }
예제 #2
0
        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));
        }