问题描述
我将 Twilio
与 Symfony 5
、ApiPlatform
和 reactjs
一起使用
我更多的是在寻找信息而不是对问题的回应。
所以我想在我的两个客户端之间实现浏览器到浏览器的调用。
Frontend
端,我有这个函数来发起与 Twilio
的连接,这似乎工作正常
function createTwilioDevice()
{
let device = Device.setup('some valid capability token');
device.ready(function(device) {
console.warn('DEVICE READY');
const params = {To: 'Joey'}
console.log('Calling ' + params.To + '...')
device.connect(params)
})
device.error(function(err) {
console.log('DEVICE ERROR : ' + err.message);
})
}
在 backend
中,我生成了我的 capability token
,如文档中所示:
public function generateCapabilityToken(string $clientName): string
{
$capability = new ClientToken($this->twilioAccountSid,$this->twilioAuthToken);
$capability->allowClientOutgoing(self::TWIML_APP_SID);
$capability->allowClientIncoming($clientName);
return $capability->generatetoken();
}
我像这样生成我的 Twiml
:
/**
*
* @Route("/twilio/handle/twiml",name="twilio_handl_twiml")
* @return Response
*/
public function generateTwiml(): Response
{
$voiceResponse = new VoiceResponse();
$number = htmlspecialchars($to);
$dial = $voiceResponse->dial(null,array('callerId' => '+15017122661'));
if (isset($to)) {
$dial->client($number);
} else {
$voiceResponse->say('There has been an issue. Thanks for calling!');
}
return new Response(
$voiceResponse->asXML(),Response::HTTP_OK,['Content-type' => 'application/xml']
);
}
经过一些测试后,capability token
和 Twiml
生成正常工作。
所以当我在前面运行 Device.connect()
时,这个虚拟设备将连接到 Twilio
,然后它会调用我在 Twiml
应用程序中设置的 URL,即 {{1 }} ,从上面的 https://127.0.0.1:5467/twilio/handle/twiml
开始。
我无法理解的部分关于客户端,我如何告诉 twilio 调用这个客户端或这个客户端,因为我希望它通过浏览器传递所以没有电话号码?
意思是说我应该传递给客户端调用的函数,但假设我将客户端的lastName传递给它,generateTwiml()
将不知道这是什么客户端或该字符串的含义
如果有人对此主题有任何提示/文档/回复,我将不胜感激,对我来说它仍然有点模糊
谢谢!
解决方法
参数作为 POST 值发送到与客户端访问令牌关联的 TwiML 应用中定义的 VoiceURL。