Хотите вложить инструкции Say в сборку, но я хочу использовать такие модификаторы, как .Emphasis, .Break и .Prosody, в инструкциях Say. В C #, похоже, нет способа сделать это. Результирующий код TwiML, который мне нужен, будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Gather action="/voice/processmygather" method="GET">
<Say> Hi
<break strength="x-weak" time="100ms"/>
<emphasis level="moderate">Words to emphasize</emphasis>
<p>Words to speak</p>
<prosody pitch="-10%" rate="85%" volume="-6dB">Words to speak</prosody>
<s>Words to speak</s>
<say-as interpret-as="spell-out">Words to speak</say-as>
<sub alias="alias">Words to be substituted</sub>
<w>Words to speak</w>
</Say>
</Gather>
<Say>We didn't receive any input. Goodbye!</Say>
</Response>
В C # я могу создать объект команды Say и изменить его, чтобы он выглядел, как указано выше, но не могу расположить его как вложенный в сборку, чтобы пользователь мог прервать высказывание ответом и перейти к обработке сборки.
var response = new VoiceResponse();
var mygather = new Gather(input: bothDtmfAndSpeech,
action: new Uri("/voice/processmygather", UriKind.Relative),
speechModel: Gather.SpeechModelEnum.NumbersAndCommands,
enhanced: true,
hints: hintchoices,
bargeIn: true,
speechTimeout: "auto",
numDigits: 1);
var mysay = new Say("Hi", voice: "Polly.Joanna");
mysay.Break(strength: "x-weak", time: "100ms");
mysay.Emphasis("Words to emphasize", level: "moderate");
mysay.P("Words to speak");
mysay.Phoneme("Words to speak", alphabet: "x-sampa", ph: "pɪˈkɑːn");
mysay.Prosody("Words to speak", pitch: "-10%", rate: "85%", volume: "-6dB");
mysay.SayAs("Words to speak", interpretAs: "spell-out", role: "yyyymmdd");
/* There seems to be no way to do the following command */
response.Append(mygather.mysay);
/* I can only do the following */
response.Append(mysay); // plays the entire say
response.Append(mygather); // only after playing entire say am I able to gather
/* I seem to able to do only the following with limited markup capability */
response.Append(mygather.Say("Here is something I want to say but have little ability to fine tune the say with .Emphasis .Break or .Prosody controls"));
Итак, можно ли просто пометить мой Say со всеми элементами управления, которые я хочу внутри сборки (во многом как в верхнем блоке кода выше), сохранить это в XML-файл, а затем указать объект ответа на этот XML-файл, и все же иметь возможность записывать голосовые или цифровые ответы пользователей в моем приложении C #?
Gather
имеется a> метод, который, вероятно, вам нужен. - person Ackdari   schedule 11.11.2020Gather
также имеетAppend
метод для добавления произвольных элементов TwiML в качестве дочерних. Похоже, вы могли бы позвонитьmygather.Append(mysay)
, чтобы добиться того, чего хотите, но я никогда не работал с Twilio и не имею доступа к тестированию. - person tychon   schedule 11.11.2020Say
принимает объектSay
. так что он похож на методAppend
, специализирующийся только на тегеSay
. Итак, вы могли просто сделатьmyGather.Say(mySay)
- person Ackdari   schedule 12.11.2020