Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Note

Мы обновили документацию, актуальная версия страницы доступна по ссылке: Парковка вызова и соединение с припаркованным вызовом (/valet_park/)

Парковка и соединение с парковочным лотом выполняется с помощью ресурса

...

В теле запроса должен быть указан параметр действия (action) и опционально номер слота

в виде:

Code Block
{ “action”   :

...

 “действие (string)” , 

   “slot”    : 

...

“номер слота

...

 (

...

integer)”}

Действие

Тип

Описание

action

string

park, bridge или slots

slot

integer

обязателен при действии park или slots

Действия по управлению вызовом

Действие

Тип

Описание

park

string

Припарковать вызов. При указании слота вызов будет припаркован в нужный слот. Без указания слота будет выбран случайный слот.Всего слотов доступно от 1 до 9. Указание номера слота обязательно.

Количество слотов = количеству возможных одновременных вызовов

timeout ожидания на парковке- 3 минуты, по истечении этого времени вызов вернется к добавочному, от имени которого произошла парковка.

bridge

string

Соединить текущий вызов с случайным, если слот не указано, либо с указанным слотом, если он задан явно

slots

string

При указании слота- уточняет Указание номера слота обязательно.

Уточняет какой uuid (часть от call_api_id) там припаркован. Без указания слота ресурс вернет свободные слоты в данный момент.

может быть от 1 до 9

Пример использования:

Code Block
breakoutModewide
Входящий звонок(может быть и исходящий - не важно) на добавочный 341- c подпиской на событие answer:


213.170.66.152 - - [04/Jun/2020 13:33:10] "GET /?CalledExtension=022*341@siptest.ringme.ru&
CalledExtensionID=34414&CallerExtension=022*200@siptest.ringme.ru&CallerExtensionID=32494&EventType=answer&
CallID=c69226e0a64e11eaa0086fd86d94a0e0&CallerIDNum=000117443&CallerIDName=via200t&CalledDID=78123093582&
CallStatus=ANSWER&CallFlow=in&CalledNumber=022*341&SubCallID=34414-c8874b88a64e11eaa0406fd86d94a0e0
&CallAPIID=3232240860-37b98fb2-a66c-11ea-ae69-6fd86d94a0e0&EventTime=1591266790576760 HTTP/1.1" 200 -

Code Block
breakoutModewide
Нам нужно запомнить CallAPIID, по нему будет запрошен ресурс
PUT /extension/{extension_id}/valet_park/{call_api_id}

Также из CallAPIID можно узнать  UUID, этот UUID возвращается при запросе информации по слоту. 
Можно будет понять вызов этого CallAPIID  все еще на парковке или его там уже нет.

Code Block
breakoutModewide
Если отправить запрос на PUT /extension/{extension_id}/valet_park/{call_api_id}

с телом
{"action": "park", "slot" : "6"}
Если парковочный слот занят - будет ошибка : 'slot already have parked member, slot is full'
Без
указания параметра slot- будет парковка в первый свободный слот.


Если вторая сторона разговора будет поставлена в слот ожидания, то на добавочном (где сработал event) будет озвучен номер слота и
произойдет окончание разговора.

По второму звонку (также не важно входящий, исходящий)
Используя {call_api_id} звонка можно сразу узнать есть ли кто-нибудь в слоте (чтобы забриджить с ним, или не делать этого,
если ожидающий вышел), запросить свободные слоты (чтобы узнать какой слот свободный для парковки)

.

запрос с телом в рамках этого примера:
{"action": "slots", "slot" : "6"}
ответ:
{u'slot': u'6', u'UUID': u'37b98fb2-a66c-11ea-ae69-6fd86d94a0e0'}

Чтобы узнать какие слоты свободные - не нужно указывать слот:
запрос с телом
{"action": "slots"}


call_api_id вызова на парковке:
3232240860-37b98fb2-a66c-11ea-ae69-6fd86d94a0e0
UUID:
           37b98fb2-a66c-11ea-ae69-6fd86d94a0e0
           
Таким образом uuid в слоте и запаркованный вызов можно соотнести.

Чтобы забриджить с конкретным слотом:
{"action": "bridge", "slot" : "6"}

Можно забриджить также со случайным слотом не нужно указываяуказывать слот:
 {"action": "bridge"}

...