Twilio - Как мне установить модератора на конференции? - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю над своим первым проектом Twilio.

Цель:

Используя только телефоны (без какого-либо пользовательского интерфейса для агентов), я бы хотелвыполните этот поток в конференцию:

  1. Звонки клиентов и (после меню выбора) конференция запускается.
  2. Агент1 присоединяется к конференции и общается с Клиентом, чтобы получить некоторую основную информацию (Агент1 вызывается Twilio; это исходящий вызов.
  3. Агент1 делает что-то , чтобы присоединить Агента2 к конференции.
  4. Проводится трехсторонняя конференция (заказчик, agent1 и agent2).

Проблема:

Напомним, что я не использую какой-либо пользовательский интерфейс и, AFAIK, DTMF не работает в конференции,Итак, чтобы получить информацию от конференции, я пытаюсь использовать hangupOnStar , как я читаю в нескольких ответах здесь, в SO (например, this ).

Однако он работает только для первоначального абонента (который по умолчанию является модератором), а не для Агента1.Я хочу, чтобы Agent1 модерировал конференцию, просто чтобы иметь возможность присоединить Agent2 (возможно, другой исходящий вызов) к конференции.

Вопрос

Можно ли установитьAgent1 в качестве модератора этой конференции?Как?

Заранее спасибо за ответы!

1 Ответ

0 голосов
/ 22 февраля 2019

Наконец-то я нашел решение!Я делюсь этим ниже.Я надеюсь, что это будет полезно для кого-то ... Это не так интуитивно понятно, но это работает.Я выполнил следующие действия:

  1. Создайте КОНФЕРЕНЦИЮ и присоединитесь к Клиенту (установите startConferenceOnEnter и EndConferenceOnExit в в значение ).
  2. Создайте CALL и подключите его к URL.В этом веб-крюке создайте TwiML, чтобы присоединить Agent1 к конференции, что позволит hangupOnStar позднее присоединиться к Agent2 (в другом веб-крюке) и установит endConferenceOnExit в false , чтобы избежатьзавершение вызова клиента.
  3. Создайте еще один веб-крюк, чтобы повторно присоединиться к Agent1 после нажатия звездочки (*) и позволить Agent2 присоединиться к конференции.

Я использую Python с платформой Flask.Вот код:

@app.route('/start_conference.html', methods=['GET', 'POST'])
def start_conference():
    agent1 = '+XXXXXXXXXXX' # Agent1's phone number
    agent2 = '+XXXXXXXXXXX' # Agent2's phone number
    confName = 'YourConferenceName'

    resp = VoiceResponse()
    dial = Dial()

    # Create a conference and join Customer
    dial.conference(
        confName,
        start_conference_on_enter=False,
        end_conference_on_exit=False,
        max_participants = 3 # Limits participants to 3
    )

    # Call to Agent1 and setup a webhook for this call with a TwiML 
to join to the conference as Moderator
    client.calls.create(
        from_=twilioPhoneNumber,
        to=agent1,
        url=ROOT_URL+'agent1_to_conference.html' # ROOT_URL is the url where app is being executed
    )
    resp.append(dial)

    return str(resp)


@app.route('/agent1_to_conference.html', methods=['GET', 'POST'])
def agent1_to_conference():
    resp = VoiceResponse()

    # Join Agent1 to the conference, allowing hangupOnStar 
functionality to join Agent2 later
    dial = Dial(
        action='join_agent2.html',
        method='POST',
        hangup_on_star=True,
    )
    dial.conference(
        confName,
        start_conference_on_enter=True,
        end_conference_on_exit=False # False, to avoid hanging up to Customer
    )
    resp.append(dial)
    return str(resp)


@app.route('/join_agent2.html', methods=['GET', 'POST'])
def join_agent2():
    resp = VoiceResponse()
    dial = Dial()

    # Re-join Agent1 (after clicking *)
    dial.conference(
        confName,
        start_conference_on_enter=True,
        end_conference_on_exit=True
    )
    resp.append(dial)

    # Join Agent2
    client.conferences(confName).participants.create(
        from_=twilioPhoneNumber,
        to=agent2
    )

    return str(resp)
...