Twilio 函数 - Whisper
Twilio Function - Whisper
我正在尝试修改以下代码以执行耳语并要求接听的代理按 1。如果他们不接听或不按 1,则呼叫将转到语音信箱。我需要将它放在一个函数中,因为我无法从 Studio 调用 Twiml Bin。任何帮助将不胜感激。下面脚本的来源是https://github.com/philnash/useful-twilio-functions/tree/master/hunt.
exports.handler = function(context, event, callback) {
const numbers = context.PHONE_NUMBERS.split(',').map(number => number.trim());
const response = new Twilio.twiml.VoiceResponse();
if (event.DialCallStatus === 'complete') {
// Call was answered and completed
response.hangup();
} else if (event.finished === 'true') {
if (context.FINAL_URL) {
response.redirect(context.FINAL_URL);
} else {
response.hangup();
}
} else {
const numberToDial = event.nextNumber ? event.nextNumber : numbers[0];
const currentNumberIndex = numbers.indexOf(numberToDial);
let url;
if (currentNumberIndex + 1 === numbers.length) {
// No more numbers to call after this.
url = '/hunt?finished=true';
} else {
const nextNumber = numbers[currentNumberIndex + 1];
url = '/hunt?nextNumber=' + encodeURIComponent(nextNumber);
}
const dial = response.dial({ action: url });
dial.number(numberToDial);
}
callback(null, response);
};
此处为 Twilio 开发人员布道者(以及该存储库的所有者)。
要执行耳语,您需要将 url
attribute 添加到指向 URL 的 url
attribute,returns TwiML 包含您想要耳语的消息.
在上面的代码中,这意味着您需要更新行:
dial.number(numberToDial);
至:
dial.number({ url: 'https://example.com/whisper' }, numberToDial);
然后,在那个 URL 你需要 return 你的消息嵌套在 <Gather>
中,这样你就可以从回答者那里得到结果。 <Gather>
需要将 action
属性设置为 URL,您将在其中获得结果。您可以仅使用 TwiML Bin 来执行此操作,结果应如下所示:
<Response>
<Gather action="ACTION_URL" numDigits="1">
<Say>You are receiving a call, please dial 1 to accept or anything else to reject</Say>
</Gather>
</Response>
最后,你的ACTION_URL
需要再次指向一个函数,这样你才能处理结果。这样的事情应该有效:
function handler(context, event, callback) {
const response = new Twilio.twiml.VoiceResponse();
if (event.Digits === '1') {
response.say('Connecting you now');
} else {
response.hangup();
}
callback(null, response);
}
这将进行窃窃私语,但由于这是该功能搜索的一部分,您需要提供 FINAL_URL
以便在搜索结束后将呼叫者转到语音信箱。
如果有帮助请告诉我。
我正在尝试修改以下代码以执行耳语并要求接听的代理按 1。如果他们不接听或不按 1,则呼叫将转到语音信箱。我需要将它放在一个函数中,因为我无法从 Studio 调用 Twiml Bin。任何帮助将不胜感激。下面脚本的来源是https://github.com/philnash/useful-twilio-functions/tree/master/hunt.
exports.handler = function(context, event, callback) {
const numbers = context.PHONE_NUMBERS.split(',').map(number => number.trim());
const response = new Twilio.twiml.VoiceResponse();
if (event.DialCallStatus === 'complete') {
// Call was answered and completed
response.hangup();
} else if (event.finished === 'true') {
if (context.FINAL_URL) {
response.redirect(context.FINAL_URL);
} else {
response.hangup();
}
} else {
const numberToDial = event.nextNumber ? event.nextNumber : numbers[0];
const currentNumberIndex = numbers.indexOf(numberToDial);
let url;
if (currentNumberIndex + 1 === numbers.length) {
// No more numbers to call after this.
url = '/hunt?finished=true';
} else {
const nextNumber = numbers[currentNumberIndex + 1];
url = '/hunt?nextNumber=' + encodeURIComponent(nextNumber);
}
const dial = response.dial({ action: url });
dial.number(numberToDial);
}
callback(null, response);
};
此处为 Twilio 开发人员布道者(以及该存储库的所有者)。
要执行耳语,您需要将 url
attribute 添加到指向 URL 的 url
attribute,returns TwiML 包含您想要耳语的消息.
在上面的代码中,这意味着您需要更新行:
dial.number(numberToDial);
至:
dial.number({ url: 'https://example.com/whisper' }, numberToDial);
然后,在那个 URL 你需要 return 你的消息嵌套在 <Gather>
中,这样你就可以从回答者那里得到结果。 <Gather>
需要将 action
属性设置为 URL,您将在其中获得结果。您可以仅使用 TwiML Bin 来执行此操作,结果应如下所示:
<Response>
<Gather action="ACTION_URL" numDigits="1">
<Say>You are receiving a call, please dial 1 to accept or anything else to reject</Say>
</Gather>
</Response>
最后,你的ACTION_URL
需要再次指向一个函数,这样你才能处理结果。这样的事情应该有效:
function handler(context, event, callback) {
const response = new Twilio.twiml.VoiceResponse();
if (event.Digits === '1') {
response.say('Connecting you now');
} else {
response.hangup();
}
callback(null, response);
}
这将进行窃窃私语,但由于这是该功能搜索的一部分,您需要提供 FINAL_URL
以便在搜索结束后将呼叫者转到语音信箱。
如果有帮助请告诉我。