Twilio / TwiML上的交互式语音菜单

时间:2018-02-21 04:25:50

标签: twilio voice twiml

我需要使用TwiML获得一个交互式菜单,并且有一些问题:

  1. 我可以完全使用TwiML进行,还是需要进行表单处理的服务器端安装?
  2. 我需要基本上接听一个电话,向用户询问几个选项(按y换yada yada,按2判断等等),并根据响应需要拨打一个或另一个号码。有点像交互式交换机
  3. 以上可能吗?关于我如何去做的任何迹象?

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

您无法使用静态TwiML生成交互式菜单,您需要能够对所做选择做出反应并需要服务器端组件的内容。

谢天谢地,你有一些选择。

正如Alex在评论中指出的那样,Twilio Studio是Twilio的可视化构建器,它允许您创建这样的流并将服务器端组件留给Twilio。有video tutorialguide,它们向您展示如何使用Studio构建IVR。

另一方面,如果你很乐意编写代码来创建这类东西,但你不想托管它,那么Twilio Functions可能就是你要找的东西。 Twilio Functions是一个用于运行代码的无服务器环境。您可以使用TwiML Bin编写初始TwiML,因为它可以是静态TwiML,类似于以下内容,它使用<Gather>来收集用户输入:

<Response>
  <Gather action="FUNCTION_URL" numDigits="1">
    <Say>Welcome to my menu, please press 1 for sales or 2 for support</Say>
  </Gather>
</Response>

然后在函数中,您需要编写一些Node.js以响应用户输入后Digits parameter将发送到action URL的传入<Gather>。您可以使用看起来像这样的函数来响应:

exports.handler = function(context, event, callback) {
  const twiml = new Twilio.twiml.VoiceResponse();
  if (event.Digits === '1') {
    twiml.dial(SALES_NUMBER);
  } else if (event.Digits === '2') {
    twiml.dial(SUPPORT_NUMBER);
  } else {
    const gather = twiml.gather({ action: 'FUNCTION_URL', numDigits: '1' })
    gather.say('That was not an option, please dial 1 for sales and 2 for support')
  }
  callback(null, twiml);
}

taking user input using <Gather>中还有一个更深入的指南。

让我知道这是否有帮助。