Twilio-未处理来电(快速启动)



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

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

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 Client Quickstart创建了功能。

在Twilio Client Quickstart上,我将TwiML SID粘贴为TwiML_APP_SID,并尝试使用我的电话号码和Twilio的号码作为CALLER_ID。

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

有什么遗漏或错误的想法吗?当我在浏览器上打开http://127.0.0.1:8080/,可以拨打电话,但当我拨打twilio号码时,浏览器上没有接到任何电话。

为了接听电话,您需要在VoiceResponse中的标记中包含您的令牌名称标识,下面是一个示例。

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();
};

看到我贴的"耶稣"客户标签了吗?这是代币生成器端:

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(),
};
};

这对我来说是有效的,按原样使用节点quickstart并更改这两个函数。

但是,不要忘记将函数voiceResponse中的"number"更改为"client",因为这是一个来电,而不是呼出。

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

而不是

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

由于Twilio的客户端quickstart节点的默认名称生成器生成一个随机名称,因此在接收来电时没有正确设置。

相关内容

最新更新