Как получить список участников конференции Twilio после присоединения нового агента - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над сценарием конференц-связи Twilio.Мой фрагмент кода добавляет руководителя в прямую конференц-связь.Теперь я хочу отправить клиентский callid, Agent callid и callid супервизора во внешний интерфейс.Используется следующий фрагмент кода.Таким образом, согласно моему сценарию, будут возвращены три callid, но в некоторых случаях возвращаются два call-sid.Я не знаю почему, но я справился с ситуацией, если еще структура.Но возникает проблема, связанная с тем, что sid супервизора всегда возвращается с правильным значением, но в некоторых случаях agentcallsid и clientcallsid переключаются.Нужно руководство для любого альтернативного метода.фрагмент кода приведен ниже.

const joinConference = (conferenceSid, supervisorName, callback) => {
  let participantsArray = [];
  client.conferences(conferenceSid)
    .participants
    .create({
      from: '+18xxxxxxxxx',
      to: `client:${supervisorName}`
    })
    .then(participant => {
      const supervisorCallSid = participant.callSid;
      console.log(`Supervisor Call Sid in Join conference is ${supervisorCallSid}`);
      client.conferences(conferenceSid)
        .participants
        .list((error, results) => {
          if (error) {
            console.error(error);
            return;
          }
            participantsArray = results.map((participantsResult, index) => {
            return {
              [`agent${index}CallSid`]: participantsResult.callSid
            }
          });
          console.log(participantsArray);
          let result = {};
          if (participantsArray.length > 2) {                    
            result = {
              "supervisorCallSid": participantsArray[0].agent0CallSid,
              "clientCallSid": participantsArray[1].agent1CallSid,
              "agentCallSid": participantsArray[2].agent2CallSid
            }
          } else {
                result = {
              "supervisorCallSid": supervisorCallSid,
              "clientCallSid": participantsArray[0].agent0CallSid,
              "agentCallSid": participantsArray[1].agent1CallSid
            }
          }
          callback(result);
        })
    })
    .done();
}

Проблема в том, что позиции agentcallsid и clientcallsid меняются при каждом вызове функции.Это проблема с картой.

1 Ответ

0 голосов
/ 02 декабря 2018

Twanio developer evangelist здесь.

Сначала вы иногда получаете sid вызова супервизора, а иногда нет, потому что ваш вызов API находится в состоянии состязания с присоединением супервизора к конференции.Я полагаюсь на sid, который возвращается из запроса API создания вызова, а не на список участников.

Список участников вызова не имеет неявного порядка, поэтому вы можете обнаружить, что агент ивызывающий абонент переключается на разные звонки.В этом случае я бы, вероятно, каким-то образом сохранял sid вызова агента и вызывающего абонента, когда вызов начался.Затем вы можете обратиться к своей записи о том, кто является агентом, а кто звонящим, а не обращаться к API.

Я не знаю намного больше о вашей настройке, поэтому не могу ничего предложить конкретнопомогите вашей проблеме.Я надеюсь, что это направит вас в правильном направлении.

...