Невозможно получить пользовательские параметры, переданные с помощью функции подключения Twilio для исходящих и входящих вызовов. - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать колл-центр с помощью Twilio, я почти на месте, но сейчас застрял, потому что не могу получить передаваемые пользователем параметры.

Моя главная цель - разрешить клиентам звонить, но сначала они должны предоставить сначала их адреса электронной почты и имена, затем нажмите кнопку вызова клиента, я хочу получить пользовательские параметры на стороне агента.

Теперь я пытаюсь передать параметры, но не могу их получить.

Вот мой код для совершения и приема вызовов, а также для передачи и получения параметров

(на стороне клиента). Этот код позволяет исходящим звонкам, клиентам совершать звонки агентам call-центра

require __DIR__ . '/vendor/autoload.php';
use Twilio\Jwt\ClientToken;

$accountSid = '';
$authToken  = '';
$appSid = '';

$capability = new ClientToken($accountSid, $authToken);
$capability->allowClientOutgoing($appSid);
$token = $capability->generateToken();

Таким образом, в соответствии с документацией, я должен передать пользовательские параметры следующим образом:

var params = {"name": "John", "email": "john@gmail.com"};
             Twilio.Device.connect(params);

(сторона агента) Этот код разрешает входящие звонки от клиентов агентам.

$accountSid = '';
$authToken  = '';

$capability = new ClientToken($accountSid, $authToken);
$capability->allowClientIncoming('joey');
$token = $capability->generateToken();

In на стороне агента я использую этот код для получения информации о клиенте или пользовательских параметров. Согласно документации, код для получения пользовательских параметров выглядит следующим образом:

if (connection.customParameters.hasOwnProperty("name")) {
            let displayName = connection.customParameters.get("name");
            console.log(displayName)
        }

        if (connection.customParameters.hasOwnProperty("email")) {
            let customerID = connection.customParameters.get("email");
            console.log(customerID)
        }

, но я получаю неопределенное

Так что, когда клиент вызывает эту функцию twilio, он ставит вызов в очередь и назначает его оператор

вот код:

exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();

    twiml.say(" Please hold, while we connect you to one of our available agent ");
    twiml.enqueue({
    workflowSid: context.WORKFLOW_SID
    }).task({}, `{"selected_skill":"operator"}`);
  callback(null, twiml);
};

Затем отсюда доступный оператор примет задачу, затем наберет агента

Оператор набирает клиента вот так

{"skills":["operator"],"contact_uri":"client:joey"}

Пожалуйста, помогите Спасибо заранее

1 Ответ

0 голосов
/ 11 апреля 2020

Исходя из моего подхода к соответствующей документации, похоже, что параметры отправляются клиенту Twilio только через TwiML, как показано здесь.

https://www.twilio.com/docs/voice/client/javascript/changelog#160 -aug-29-2018

Добавлена ​​поддержка пользовательских входящих параметров из TwiML как Map Connection.customParameters. Когда приложение TwiML отправляет пользовательские параметры, используя существительное, эти параметры будут добавлены в Connection.customParameters

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Dial>
    <Client>
      <Identity>alice</Identity>
      <Parameter name="foo" value="bar"/>
      <Parameter name="baz" value="123"/>
    </Client>
  </Dial>
</Response>

Похоже, вы используете Task Router JavaScript SDK, возможно, вы можете добавить эти параметры как атрибуты для задачи , а затем доступ к этим задачам из клиентского SDK Task Router ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...