Я пытаюсь получить звонок, инициированный нажатием кнопки в браузере, чтобы позвонить на настоящий мобильный телефон в Великобритании (мой телефон, для тестирования).
Я немедленно получаю звук зависания и консольное сообщение «Получено HANGUP от шлюза».
Called init
Twilio:812 Received token and setting up device
Device.setup @ twilio.min.js:55
(anonymous) @ Twilio:813
Promise.then (async)
init @ Twilio:811
created @ Twilio:796
callHook @ vendor.js?id=32f887f09d9fd70ffc0a:94704
Vue._init @ vendor.js?id=32f887f09d9fd70ffc0a:96413
VueComponent @ vendor.js?id=32f887f09d9fd70ffc0a:96581
createComponentInstanceForVnode @ vendor.js?id=32f887f09d9fd70ffc0a:96093
init @ vendor.js?id=32f887f09d9fd70ffc0a:95914
createComponent @ vendor.js?id=32f887f09d9fd70ffc0a:97391
createElm @ vendor.js?id=32f887f09d9fd70ffc0a:97338
patch @ vendor.js?id=32f887f09d9fd70ffc0a:97913
Vue._update @ vendor.js?id=32f887f09d9fd70ffc0a:94453
updateComponent @ vendor.js?id=32f887f09d9fd70ffc0a:94571
get @ vendor.js?id=32f887f09d9fd70ffc0a:94925
run @ vendor.js?id=32f887f09d9fd70ffc0a:95002
flushSchedulerQueue @ vendor.js?id=32f887f09d9fd70ffc0a:94764
(anonymous) @ vendor.js?id=32f887f09d9fd70ffc0a:93620
flushCallbacks @ vendor.js?id=32f887f09d9fd70ffc0a:93541
twilio.min.js:55 Setting up VSP
twilio.min.js:55 WSTransport.open() called...
twilio.min.js:55 Attempting to connect...
twilio.min.js:55 Closing and cleaning up WebSocket...
twilio.min.js:55 No WebSocket to clean up.
twilio.min.js:55 WebSocket opened successfully.
twilio.min.js:55 [PStream] Setting token and publishing listen
twilio.min.js:55 Stream is ready
Twilio:822 Connected and ready
Twilio:801 Trying to make a call
twilio.min.js:55 [Twilio.PeerConnection] signalingState is "have-local-offer"
twilio.min.js:55 Received HANGUP from gateway
twilio.min.js:55 Disconnecting...
twilio.min.js:55 [Twilio.PeerConnection] iceConnectionState is "closed"
twilio.min.js:55 [Twilio.PeerConnection] signalingState is "closed"
Я использую CDN-версию Twilio JS-клиента https://media.twiliocdn.com/sdk/js/client/v1.6/twilio.min.js.
Я тестирую его локально по URL-адресу ngrok.
Я использую AccessTokens, и я не получаю сообщение об ошибке для токена доступа, поэтому я предполагаю, что токен совершенно действителен.
Код для генерации моего токена:
$token = new \Twilio\Jwt\AccessToken(
$account_sid = "xxx",
$api_key = "xxx",
$api_secret = "xxx",
$ttl = 3600,
$identity = "example@example.com"
);
$voice = new \Twilio\Jwt\Grants\VoiceGrant();
$voice->setOutgoingApplicationSid(
$outgoing_sid = "xxx"
);
$token->addGrant($voice);
return $token->toJWT();
и мой клиентский код выглядит так:
makeCall() {
console.log("Trying to make a call");
Twilio.Device.connect({
From: '+442921673534',
To: '+447580007865',
});
},
init() {
console.log("Called init");
Nova.request().get('/nova-vendor/alexbowers/nova-twilio-field/token').then(function(response) {
console.log("Received token and setting up device");
Twilio.Device.setup(response.data, {debug: true});
});
Twilio.Device.disconnect((e) => {
// console.log(e);
this.handleClose();
});
Twilio.Device.ready(function() {
console.log("Connected and ready");
});
Twilio.Device.error(function(e) {
// console.log(e);
console.log("Handling error");
});
},
Где makeCall вызывается при нажатии, а init вызывается при загрузке страницы.