Twilio JS Client - пытается подключиться к «поставленному» вызову - PullRequest
0 голосов
/ 10 июля 2019

Я создаю программное решение для телефона, используя Twilio JS SDK client ...

, поэтому входящий получает мой серверный PHP-скрипт, который ставит вызов в очередь с этим Twiml:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say language="pt-BR">Olá Rodrigo, em breve você será atendido.</Say>
    <Enqueue action="http://xxxx/_api/external/twilio/ura_queueaction.php" waitUrl="http://xxxx/_api/external/twilio/ura_wait.php">CAcb486a96ecd4f458ac0287568d122035</Enqueue>
</Response>

.... поэтому после того, как вызов встал в очередь, мой webhook вызывается, и теперь у меня есть очередь этого вызова:

QueueSid    "QU34063a138b999bfb28c0b732e84a5a7f"

... так что теперь моя внутренняя система уведомлений уведомила моего внутреннего пользователяв нашей интрасети, поэтому с помощью объекта устройства twilio мне нужно подключить этого локального «агента» к этому вызову в очереди ... я пытаюсь сделать это, используя:

var params = {
  To: queuesid
};
if (device) {
  device.connect(params);
}

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

Я ищу по всему интернетусписок возможных "параметров" для device.connect (" PARAMS ") .... ничего не найдено.

Любая хорошая душа здесь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

я сделал это !!!

проблема действительно была в функции twilio ... вот решение:

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

    if(event.To) {
      // Wrap the phone number or client name in the appropriate TwiML verb
      // if is a valid phone number
      //const attr = isAValidPhoneNumber(event.To) ? 'number' : 'client';

      re = /^(.*?)-(.*)+$/;
      var myRe = re.exec(event.To);
      var type = myRe[1];
      var destin = myRe[2];

      if(type == "phone"){
        const dial = twiml.dial({
          callerId: context.CALLER_ID,
          record: 'record-from-ringing-dual'
        });
        dial['number']({}, destin);
      }
      if(type == "client"){
        const dial = twiml.dial({
          callerId: context.CALLER_ID,
          record: 'record-from-ringing-dual'
        });
        dial['client']({}, destin);
      }
      if(type == "queue"){
        const dial = twiml.dial({
          callerId: context.CALLER_ID,
          record: 'record-from-ringing-dual'
        });
        dial['queue']({url: 'http://xxxx/_api/external/twilio/ura_dequeue.php?queue='+destin}, event.To);
//console.log(myRe);

      }

      //dial[attr]({}, event.To);
    } else {
      twiml.say('Thanks for calling!');
    }

     callback(null, twiml);
};
0 голосов
/ 11 июля 2019

, когда я вызвал вызов, я назвал его "queue -" ... например:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say language="pt-BR">Olá Rodrigo, em breve você será atendido.</Say>
    <Enqueue action="http://xxxx/_api/external/twilio/ura_queueaction.php" waitUrl="http://xxxxx/_api/external/twilio/ura_wait.php">queue-CAdc202422b5cadcda115bb44912920e3e</Enqueue>
</Response>

, поэтому я изменил свой код функции twilio на:

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

    if(event.To) {
      // Wrap the phone number or client name in the appropriate TwiML verb
      // if is a valid phone number
      //const attr = isAValidPhoneNumber(event.To) ? 'number' : 'client';

      re = /^(.*?)-(.*?)+$/;
      var myRe = new RegExp(re, "g");
      var type = myRe[0];
      var destin = myRe[1];

      const dial = twiml.dial({
        callerId: context.CALLER_ID,
      });

      if(type == "phone"){
        dial['number']({}, destin);
      }
      if(type == "client"){
        dial['client']({}, destin);
      }
      if(type == "queue"){
        twiml.dial().queue(event.To)
      }

      //dial[attr]({}, event.To);
    } else {
      twiml.say('Thanks for calling!');
    }

     callback(null, twiml);
};

/**
* Checks if the given value is valid as phone number
* @param {Number|String} number
* @return {Boolean}
*/

function isAValidPhoneNumber(number) {
  return /^[\d\+\-\(\) ]+$/.test(number);
}

, но дажетогда я не могу подключиться к вызову в очереди .... какие-либо подсказки?

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