Имя вызывающего абонента Twilio при приеме программируемого голосового вызова в приложении ios

Я использую Программируемый голос Twilio в одном из проектов. Мое основное требование - разместить класс VoIP между мобильными устройствами (без вызовов PSTN). Я могу совершать вызовы с одного устройства на другое, но не могу указать соответствующее имя вызывающего абонента на экране входящего вызова.

Пожалуйста, расскажите мне, как отображать имя вызывающего абонента на принимающем устройстве. Значение «from» TVOCallInvite показывает номер мобильного телефона «+ 18xxxxxxxx», но мне нужно отобразить имя звонящего. . Мы создали PHP-файл TwiML, который содержит имя набранного клиента и идентификатор вызывающего абонента (мой саржевый номер). Мы назначили URL-адрес этого файла в URL-адресе запроса приложения TwiML (https://www.twilio.com/console/voice/twiml/apps/myappid).

Мы можем назначить имя вызывающего абонента в CallKit «localizedCallerName», но мы получаем номер телефона вместо идентификатора вызывающего абонента.

Подробности: руководство следует: https://github.com/twilio/voice-quickstart-swift TwilioVoice -> 2.0.0 Версия iOS: 10.1 Устройство: iPhone 7 и iPhone 5S

Пожалуйста, найдите прикрепленный снимок экрана.

введите здесь описание изображения

Обратите внимание, что я искал в Google, но не нашел ответа.

Спасибо.

Ниже мой файл voice.php

<?php

require __DIR__ . '/TwilioSdk/Twilio/autoload.php';
include('config.php');
use Twilio\Twiml;
$response = new Twiml;

if (isset($_REQUEST['To']) && strlen($_REQUEST['To']) > 0) 
{
  $number = htmlspecialchars($_REQUEST['To']);
  $dial = $response->dial(array('callerId' => $callerid)); // callerid is +18XXXXXXXXX
  if (preg_match("/^[\d\+\-\(\) ]+$/", $number)) 
  {
    $dial->number($number);
  } 
  else 
  {
    $dial->client($number);
  }
} 
else 
{
   $response->say("Thanks for calling!");
}
header('Content-Type: text/xml');
echo $response;

?>

Консоль Twilio для журналов вызовов

введите здесь описание изображения


person Community    schedule 12.06.2018    source источник
comment
Я предполагаю, что номер + 18xxxxxxxx - это ваш номер Twilio? При звонках от клиента к клиенту вам не нужно использовать номер Twilio в качестве callerId, вместо этого вы можете использовать идентификатор клиента. Вы пробовали это?   -  person philnash    schedule 14.06.2018
comment
Я добавил код для файла php, который я установил в twilml. Можете ли вы сказать мне, где мне внести изменения?   -  person    schedule 19.06.2018
comment
Я предлагаю вам изменить callerId на идентификатор клиента, например client:yourClientIdentifier. Вы также должны иметь возможность поймать этот идентификатор в уведомлении, заменить его более подходящим идентификатором и обновить отображение в уведомлении. Я сам еще не работал с CallKit, поэтому я не лучший человек, чтобы ответить, как вы это сделаете.   -  person philnash    schedule 20.06.2018
comment
Можете ли вы спросить одного из членов вашей команды Twilio, кто работал над этим?   -  person    schedule 20.06.2018
comment
Вы уже пробовали заменить callerId идентификатором клиента, а не номером телефона?   -  person philnash    schedule 21.06.2018
comment
да, я добавил идентификатор вместо телефона, изменив его как - $ dial = $ response- ›dial (array ('callerId' =› clientidentifier)); но не работает   -  person    schedule 21.06.2018
comment
Что не работает? Вы все еще видите номер телефона?   -  person philnash    schedule 21.06.2018
comment
Пожалуйста, проверьте мой вопрос, я добавил оснастку. После установки идентификатора клиента я получаю несколько чисел из   -  person    schedule 21.06.2018
comment
О, вызывающий абонент должен начинать с client:, а затем с идентификатора клиента. Что вы увидели в приложении?   -  person philnash    schedule 21.06.2018
comment
Одно и то же имя как у абонента, так и у получателя   -  person    schedule 21.06.2018
comment
Не могли бы вы написать здесь синтаксис. я не могу понять, что мне передать здесь $ dial = $ response- ›dial (array ('callerId' =› $ callerid));   -  person    schedule 21.06.2018
comment
$response->dial(array('callerId' => 'client:' . $clientName)); Значит, теперь вы видите имя при входящем звонке в приложение iOS?   -  person philnash    schedule 21.06.2018
comment
Позвольте мне попробовать это один раз   -  person    schedule 21.06.2018
comment
Спасибо большое, теперь все работает :) Спасибо, philnash за отличную поддержку.   -  person    schedule 21.06.2018
comment
Ой, круто, добавлю ответ, чтобы всем было понятно.   -  person philnash    schedule 21.06.2018
comment
Да, пожалуйста. Иногда для определения пропущенного маленького слова требуется больше времени.   -  person    schedule 21.06.2018


Ответы (1)


Проповедник разработчиков Twilio здесь.

Чтобы имя отображалось на экране вызова iOS в CallKit, вам необходимо передать идентификатор клиента как callerId, а не номер телефона.

Идентификаторы клиентов должны иметь префикс client:. Итак, в приведенном выше коде важной частью является создание TwiML, который должен выглядеть следующим образом:

$response->dial(array('callerId' => 'client:' . $clientName));

Обратите внимание: при наборе номера телефона в качестве идентификатора вызывающего абонента необходимо использовать номер. Если вы звоните другому клиенту, вы можете использовать номер телефона или идентификатор клиента. Если вы хотите, чтобы имя отображалось в приложении, я рекомендую идентификатор клиента, как указано выше.

person philnash    schedule 21.06.2018