Проблема с Twilio Javascript SDK и worker.on events / booking.created - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь настроить входящие звонки от twilio.Я вижу, что он назначает резервирование, и он console.logs out. Получено сообщение типа [booking.created], однако рабочее событие для worker.on ("servation.created ", function (routing) {не срабатывает.

Если я включу taskrouter / js / v1.0 / taskrouter.worker.min.js, как некоторые предыдущие примеры включают, тогда я получу событие. Проблема в том, что я пытаюсь сделать booking.conference () в направленииподдержки twilio, и это не поддерживается даже в исходном маршрутизаторе задач 1.14, который я использовал. Я думал, что это из-за конфликтующих библиотек и удаления taskrouter.worker.min.js, но тогда это даже не срабатывает.

Вызовы наподобие worker.on («подключен», функция () работает нормально, поэтому я знаю, что кусок есть, но сообщения не поддерживаются.

В настоящее время я использую следующие библиотеки

// media.twiliocdn.com/sdk/js/client/v1.7/twilio.min.js и //media.twiliocdn.com/taskrouter/js/v1.20/taskrouter.min.js

Попробовал Taskrouter 1.14,проверено на более поздние версии taskrouter.worker.js.Проверил версию v2, чтобы увидеть, изменилось ли имя по запросу.

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://media.twiliocdn.com/sdk/js/client/v1.7/twilio.min.js"></script>
<script type="text/javascript" src="//media.twiliocdn.com/taskrouter/js/v1.20/taskrouter.min.js"></script>
</head>

<body>

<!-- dialer is here -->


<script type="text/javascript">
    window.onload = function(){

        //if the user is in the console only, then create a worker.


            //get a worker token for the given workspace sid using the twilio 
            var workerToken = "{! TRToken }";

            //create a new worker and set up the device
            var worker = new Twilio.TaskRouter.Worker(workerToken);
            Twilio.Device.setup("{! token }");

            var taskID;

            worker.on("ready", function(worker) {
                console.log(worker.sid)             // 'WKxxx'
                console.log(worker.friendlyName)    // 'Worker 1'
                console.log(worker.activityName)    // 'Reserved'
                console.log(worker.available)       // false
            });

            worker.on("connected", function() {
                console.log("Websocket has connected");
            });


            //show on ready status (not seeing this)
            worker.on("ready", function(worker) {
                console.log(worker.sid)             // 'WKxxx'
                console.log(worker.friendlyName)    // 'Worker 1'
                console.log(worker.activityName)    // 'Reserved'
                console.log(worker.available)       // false
            });

            worker.on("reservation.created", function(reservation) {
                console.log('showing reservation');
                console.log('details', reservation);
                //console.log('reservation', reservation.task.attributes);

                //console.log('Call coming from ' + reservation.task.attributes.from);

                //show dialog to accept incoming call. 
                if (window.confirm('Accept incoming call?')){
                    console.log('accepting incoming call');

                    //set to conference which should accept the reservation and connect the call
                    reservation.conference();
                }
                else{
                    //user declines the call
                    updateWokerStatusJS();
                }
            });

            worker.on("reservation.accepted", function(reservation) {
                console.log('accepting reservation ' + reservation.task.sid)
                taskID = reservation.task.sid;
             });


            // Handle incoming calls from Twilio. This is after the reservation is accepted so it would just connect the call
            Twilio.Device.incoming(function (conn) {
                console.log('incoming call ringing');
                conn.accept();
            });         
    };
    </script>
</body>
</html>

Используя приведенный выше код, я вижу эти журналы консоли, поэтому он показывает, что я подключаюсь, меняю статус, и есть сообщение booking.created, но он выигралне активировать действие worker.on для booking.created, хотя worker.on («подключен» .. работает).

Websocket подключился

Получено сообщение типа [подключено]

Получено сообщение типа [booking.created]

Рабочая активность изменена на: Зарезервировано

Получено сообщение типа [activity.update]

IОднако, не получайте всплывающее окно, и оно никогда не войдет в блок кода «показ резервирования».

Если я включу библиотеку twilio v1.0 / taskrouter.worker.min.js, то она покажет всплывающее окноОднако, когда я пытаюсь сделать booking.conference (), он говорит, что это недопустимая функция (и я не вижу этот метод видимым для объекта резервирования. Я предполагаю, что это произошло из-за версий библиотеки.

...