构建一个Twilio Autopilot bot IVR,该IVR可以接听电话并按照说明进行操作

时间:2019-10-13 07:45:41

标签: twilio

我正在尝试构建一个可以接听电话的机器人。呼叫者会说“ Press 1”之类的短语,而漫游器会播放数字1。

如果呼叫者说按了2,则漫游器会通过播放数字2进行响应,依此类推。

任何见解都会有所帮助。谢谢

Lu

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

欢迎使用StackOverflow!

Node.js quickstart具有使用自动驾驶仪制作语音机器人所需的前几个步骤。

首先,您需要购买一个Twilio电话号码here。 然后,您将使用来自Twilio Autopilot机器人的URL配置该数字。该数字可以在自动驾驶机器人的Channels下找到。 enter image description here 单击可编程语音,然后复制此URL enter image description here,然后将其粘贴到语音和传真下,以防来电出现在 webhook 旁边。 : enter image description here

接下来,您可以为用户可以说的每个可能的短语制定任务。如果该短语是“按1”,则可以将其重定向到Twilio Function,该sendDigits在呼叫被接听时使用{ "actions": [ { "redirect": { "uri": "https://YOUR-TWILIO-FUNCTION-URL.twil.io/actions", "method": "POST" } } ] } 播放DTMF音。 Twilio Autopilot任务可以包含以下JSON:

const VoiceResponse = require('twilio').twiml.VoiceResponse;
const response = new VoiceResponse();
const dial = response.dial();
dial.number({
    sendDigits: 'wwww1928'
}, 'replace-with-number-to-dial');
console.log(response.toString());

那么您的功能代码可能是

exports.handler = function(context, event, callback) {
    const VoiceResponse = require('twilio').twiml.VoiceResponse;
    const response = new VoiceResponse();
    const dial = response.dial();
    let responseObject = {};
    let memory = JSON.parse(event.Memory);
    console.log(memory.twilio.collected_data);
     let num = memory.twilio.collected_data.your_collect_function_name.answers.your_question_name.answer;
    console.log(num); //collected data from memory
    if(num == 0 || num == "zero") {
        dial.number({
            sendDigits: '0'
        }, 'replace-with-number-to-dial');
        console.log(response.toString());
    }
};

或者,您可以执行一个自动驾驶任务,然后在Twilio函数中使用条件查询用户说的号码。那将包括类似于以下的代码:

listOf(agreement, oldAgreement)
    .map { it.id }
    .forEach { println("from listOf() id is $it")}

// program the mock to return a list like the statement above
whenever(checkinService.getStudentAgreements(agreement.sidTerm))
    .thenReturn(listOf(agreement, oldAgreement))

checkinService.getStudentAgreements(agreement.sidTerm)
    .map { it.id }
    .forEach { println("from mock id is $it")}

让我知道这是否有帮助!