我正在尝试将Twilio集成到我的网站中以进行语音通话。
这是我正在使用的代码:
var client = twilio(config.accountSid, config.authToken);
app.post('/call', function(request, response) {
var salesNumber = request.body.salesNumber;
var url = 'http://demo.twilio.com/docs/voice.xml';
var options = {
to: request.body.phoneNumber,
from: config.twilioNumber,
url: url,
};
client.calls.create(options)
.then((message) => {
console.log(message.responseText);
response.send({
message: 'Thank you! We will be calling you shortly.',
});
})
.catch((error) => {
console.log(error);
response.status(500).send(error);
});
});
通过此代码,我的电话正在接通。接听该电话时,它会发出一些静态声音(“感谢您尝试使用我们的文档。请尽情享受!”)。并且该电话已断开连接。有什么方法可以像正常呼叫通信那样进行通信两个人之间? 请指导我。 谢谢。
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
到目前为止,您已经实现的是点击通话实现的前半部分。您的代码采用一个号码,并在该号码和您的Twilio号码之间建立呼叫。这意味着您在真实人和Twilio之间只有一条通话路线。
您已确定您正在使用演示URL。此URL是呼叫下一步发生的关键。您需要提供一个URL,该URL可以指导Twilio为您拨打电话的下一部分,并拨打其他人的电话。
URL需要返回TwiML来执行此操作。 TwiML是XML,它告诉Twilio如何处理呼叫。演示URL返回包含<Say>
的TwiML,该TwiML负责向您读出消息。
如果我们想将此呼叫连接到其他人,则需要拨打他们的电话。要使用TwiML做到这一点,我们需要一个URL,该URL可以返回一个<Dial>
元素以及您要呼叫的号码。看来您正在使用express,因此这是一个使用express返回TwiML以使用<Dial>
连接到另一个用户的示例。
var VoiceResponse = twilio.twiml.VoiceResponse;
app.post('/connect', function(request, response) {
var twiml = new VoiceResponse();
var dial = twiml.dial();
dial.number(NUMBER_TO_CALL);
response.set('Content-Type', 'application/xml')
response.send(twiml.toString());
}
您需要填写您要拨打的电话,我已经在其中写了NUMBER_TO_CALL
。
在该端点返回TwiML的情况下,您现在需要使用URL将其连接到呼出电话。当呼叫与第一个用户接通时,Twilio将向URL发出请求,但是当您在本地进行开发时,Internet上无法使用快速应用程序。 I recommend建立类似于ngrok的东西,可以作为通向本地开发环境的通道。 ngrok将为您提供指向您的快速应用程序的URL,并可以在进行此调用时使用。
获取您的URL并从原始代码中替换演示1。让我知道进展如何。