gpt4 book ai didi

node.js - Twilio - 未处理来电(快速入门)

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:18 24 4
gpt4 key购买 nike

我已注册开始使用 Twilio,并且正在尝试设置快速启动 ( https://www.twilio.com/docs/voice/client/javascript/quickstart ),它几乎可以正常工作,但未收到来电:

客户端代码(在浏览器上使用 getTokenCapability 之后):

  Twilio.Device.incoming(function (conn) {
log('Incoming connection from ' + conn.parameters.From);
var archEnemyPhoneNumber = '+12093373517';

if (conn.parameters.From === archEnemyPhoneNumber) {
conn.reject();
log('It\'s your nemesis. Rejected call.');
} else {
// accept the incoming connection and start two-way audio
conn.accept();
}
});

用于语音调用的 Twilio 功能上的代码(始终打印控制台,否则永远不会调用条件:

exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
console.log('entrou aqui');
if(event.To) {
console.log('entrou ali');
// Wrap the phone number or client name in the appropriate TwiML verb
// if is a valid phone number
const attr = isAValidPhoneNumber(event.To) ? 'number' : 'client';

const dial = twiml.dial({
callerId: context.CALLER_ID,
});
dial[attr]({}, event.To);
} else {
twiml.say('Thanks for calling!');
}
console.log('callback');
callback(null, twiml);
};

/**
* Checks if the given value is valid as phone number
* @param {Number|String} number
* @return {Boolean}
*/
function isAValidPhoneNumber(number) {
return /^[\d\+\-\(\) ]+$/.test(number);
}

我已将我的电话号码作为已验证的来电显示,从 Twilio 获取号码并使用模板 Twilio 客户端快速入门创建函数。

在 Twilio 客户端快速入门中,我已将 TwiML SID 粘贴为 TWIML_APP_SID,并尝试使用我的电话号码和 Twilio 中的号码作为 CALLER_ID。

此外,我还更改了 TwiML 配置上的 VOICE URL,并更改了 twilio 配置中电话号码上的 VOICE URL。

对于缺少什么或有什么问题有什么想法吗?当我在浏览器上打开时 http://127.0.0.1:8080/ ,可以调用电话,但当我调用 twilio 号码时,我在浏览器上没有收到任何电话。

最佳答案

为了接听电话,您需要在 VoiceResponse 的标签中包含您的 token 名称身份,这是一个示例。

exports.incomingVoiceResponse = function voiceResponse( to ) {
// Create a TwiML voice response
const twiml = new VoiceResponse();

// Wrap the phone number or client name in the appropriate TwiML verb
// if is a valid phone number
const attr = isAValidPhoneNumber(to) ? 'client' : 'number';

const dial = twiml.dial({
callerId: to,
});
dial[attr]({}, 'jesus');
console.log(twiml.toString())
return twiml.toString();
};

看到我放置的“耶稣”客户标签了吗?这是 token 生成器端:

exports.tokenGenerator = function tokenGenerator() {
const identity = 'jesus';
const capability = new ClientCapability({
accountSid: config.accountSid,
authToken: config.authToken,
});

capability.addScope(new ClientCapability.IncomingClientScope(identity));
capability.addScope(new ClientCapability.OutgoingClientScope({
applicationSid: config.twimlAppSid,
clientName: identity,
}));

// Include identity and token in a JSON response
return {
identity: identity,
token: capability.toJwt(),
};
};

这对我来说很有效,按原样使用 Node 快速入门并更改这两个功能。

但是,不要忘记将函数 voiceResponse 中的“号码”更改为“客户端”,因为这是来电而不是去电。

  const attr = isAValidPhoneNumber(to) ? 'client' : 'number';

而不是

  const attr = isAValidPhoneNumber(to) ? 'number' : 'client';

由于来自 Twilio 的 client-quickstart-node 的默认 nameGenerator 生成随机名称,因此在接收来电时未正确设置。

关于node.js - Twilio - 未处理来电(快速入门),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com