首页 > 解决方案 > 使用 Twilio 的客户端到客户端 VoIP 语音 SDK 呼叫

问题描述

我正在尝试使用 Twilio 的语音 SDK 进行 VoIP 客户端到客户端的呼叫。到目前为止,我可以让我的 iPhone 拨打我的 Android 手机,反之亦然,但只能听到自动语音说出“to”客户的身份,而不是两部手机只能相互交谈。我在这里错过了什么吗?

对于这两个平台,我只是使用 Twilio 提供的示例存储库。对于服务器,我使用的是 Twilio 的示例 NodeJS 无服务器代码。

// /place-call

...

var url = 'https://' + context.DOMAIN_NAME + '/incoming';
const client = context.getTwilioClient();

client.calls.create({
    url: url,
    to: 'client:' + to,
    from: event.From,
}, function(err, result) {    
    // End our function
    if (err) {
        callback(err, null);
    } else {
        callback(null, "<Response/>");
    }
});

...

// /incoming

...

const toClient = (event.To).replace('client:', '');
const twiml = new Twilio.twiml.VoiceResponse();

const dial = twiml.dial();
const client = dial.client();
client.identity(toClient);
callback(null, twiml.toString());

...

当我查看日志时,我看到“/incoming”端点返回:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial>
        <Client>
            <Identity>android_user</Identity>
        </Client>
    </Dial>
</Response>

标签: twiliotwilio-twimltwilio-programmable-voice

解决方案


Twilio 开发人员布道者在这里。

问题是您将 TwiML 作为字符串返回,然后 Twilio Functions 将响应视为 Content-Type text/plain。然后 Twilio 读取内容,就好像它是一个<Say>.

不过,这很容易解决。改变:

callback(null, twiml.toString());

callback(null, twiml);

Twilio Functions 将识别twiml变量的类型VoiceResponse并将 Content-Type 设置为text/xml,您的应用程序将按预期工作。


推荐阅读