Я пытаюсь расшифровать голосовой ответ вызывающего абонента и программно зачитать голосовой ответ пользователя с помощью twilio.
Итак, когда пользователь первоначально вызывает номер twilio, вызов привязывается к методу ниже действия (см. Вhttps://www.twilio.com/docs/voice/twiml/record?code-sample=code-record-a-voicemail&code-language=C%23&code-sdk-version=5.x) приложения ASP.NET MVC.
[HttpPost]
public TwiMLResult Welcome()
{
var response = new VoiceResponse();
try
{
response.Say("Please say your user Id, example ABC123, \n and press star when done", Say.VoiceEnum.Alice, null, Say.LanguageEnum.EnGb);
// record and transcribe users voice
response.Record(
transcribe: true,
transcribeCallback: new Uri("https://35eb31e3.ngrok.io/Ivr/HandleTranscribedVrn"),
finishOnKey: "*");
response.Say("I did not receive a recording");
}
catch (Exception e)
{
ErrorLog.LogError(e, "Error within ivr/Welcome");
response = RejectCall();
}
return TwiML(response);
}
Примечание - https://35eb31e3.ngrok.io/Ivr/HandleTranscribedVrn - это туннельный общедоступный URL-адрес ngRok для вызова метода.
ИтакЯ пытаюсь записать голосовой ввод пользователя после того, как пользователь произнес его / ее идентификатор пользователя и затем нажимает клавишу *. Поэтому после нажатия * я ожидаю, что twilio расшифрует и ответит на метод действия обратного вызова ниже (https://35eb31e3.ngrok.io/Ivr/HandleTranscribedVrn) с помощьютекст транскрипции и другая транскрибированная информация.
[HttpPost]
public TwiMLResult HandleTranscribedVrn()
{
var response = new VoiceResponse();
try
{
// get the transcribed result - https://www.twilio.com/docs/voice/twiml/record#transcribe
var result = new TranscribedResult
{
TranscriptionSid = Request.Params["TranscriptionSid"],
TranscriptionText = Request.Params["TranscriptionText"],
TranscriptionUrl = Request.Params["TranscriptionUrl"],
TranscriptionStatus = Request.Params["TranscriptionStatus"],
RecordingSid = Request.Params["RecordingSid"],
RecordingUrl = Request.Params["RecordingUrl"],
AccountSid = Request.Params["AccountSid"]
};
// reading the transcibed result
response.Say("You said,\n {0}", result.TranscriptionText);
// done
response.Say("Good Bye", Say.VoiceEnum.Alice, null, Say.LanguageEnum.EnGb);
}
catch (Exception e)
{
ErrorLog.LogError(e, "Error within ivr/HandleTranscribedVrn");
response.Say(ConversationHelper.NothingReceived, ConversationHelper.SpeakVoice, 1, ConversationHelper.SpeakLanguage);
}
return TwiML(response);
}
Короче говоря, я хочу, чтобы вышеуказанное действие обратного вызова захватывало транскрипт для голосового ввода пользователя и считывало его, как
Вы сказали: {Users VoiceTranscript - пример - abc123}, До свидания
Проблема
Когда пользователь звонит на номер twilio, он выполняет контроллер действия Welcome () и говорит
«Скажите, пожалуйста, свой идентификатор пользователя, например, ABC123, \ n и нажмите звездочку, когда закончите»
Пользователь произносит свой идентификатор пользователя - EFG456 и нажимает клавишу * как обычно.
Затемон снова говорит (бесконечно, пока пользователь не отключит вызов), не переходя к транскрибированному действию обратного вызова - HandleTranscribedVrn - «Скажите, пожалуйста, свой идентификатор пользователя, например, ABC123, \ n и нажмите star, когда закончите»
Любая помощь будет оченьоценили.