public function mobileCallTwimlResponse(Request $request): VoiceResponse
{
$from = $request->From ?? config('services.twilio.number');
$to = $request->To;
$dial = $this->twimlResponse->dial(null, ['callerId' => $from]);
if (!$to) {
$this->twimlResponse->say(' "Congratulations! You have made your first call! Good bye."');
} elseif (is_string($to)) {
$dial->number($to);
} else {
$dial->client($from);
}
return $this->twimlResponse;
}
public function receiveCall(Request $request)
{
$account_sid = config('services.twilio.accountSid');
$auth_token = config('services.twilio.authToken');
$twilio_client = new Client($account_sid, $auth_token);
$from = $request->From ?? config('services.twilio.number');
$to = $request->To;
$call = null;
$url = route('mobile_receive_call');
if (!$to) {
$call = $twilio_client->calls->create("client:customer", $from,
array(
"url" => $url,
));
} elseif (is_numeric($to)) {
$call = $twilio_client->calls->create($to, $from,
array(
"url" => $url,
));
} else {
$to = "client:" . $to;
$call = $twilio_client->calls->create($to, $from,
array(
"url" => $url,
));
}
return $call->sid;
}
public function incomingCall()
{
return $this->twimlResponse->say('incoming call responding');
}
У меня есть приведенный выше код для получения входящего вызова в мое мобильное приложение, но я не могу понять, как twilio отправляет уведомление о входящем вызове в мое мобильное приложение и через какое мобильное приложение пользователь отвечает на вызов. Я установил push-учетные данные в API создания токена.
private $accessToken;
public function __construct(AccessToken $accessToken)
{
$this->accessToken = $accessToken;
}
public function token($applicationSid, $identity = 'customer', $page_url = null): string
{
$forPage = $page_url;
/*if ($forPage === route('dashboard', [], false)) {
$this->accessToken->setIdentity('support_agent');
} else {
$this->accessToken->setIdentity('customer');
}*/
$this->accessToken->setIdentity($identity);
// Create Voice grant
$voiceGrant = new VoiceGrant();
$voiceGrant->setOutgoingApplicationSid($applicationSid);
// Optional: add to allow incoming calls
$voiceGrant->setIncomingAllow(true);
$voiceGrant->setPushCredentialSid(config('services.twilio.push_credential_sid'));
// Add grant to token
$this->accessToken->addGrant($voiceGrant);
// render token to string
return $this->accessToken->toJWT();
}
но как триггер Twilio уведомляет FCM? он справится с этим сам по себе, или им нужно написать код на стороне сервера, где вызывается веб-перехватчик входящего вызова, и через этот код уведомление о входящем вызове отправляется в мобильное приложение?