Note |
---|
Мы обновили документацию, актуальная версия страницы доступна по ссылке: Парковка вызова и соединение с припаркованным вызовом (/valet_park/) |
Парковка и соединение с парковочным лотом выполняется с помощью ресурса
...
В теле запроса должен быть указан параметр действия (action) и опционально номер слота
в виде:
Code Block |
---|
{ “action” : |
...
“действие (string)” , “slot” : |
...
“номер слота |
...
( |
...
integer)”} |
Действие | Тип | Описание |
---|---|---|
|
|
|
|
| обязателен при действии |
Действия по управлению вызовом
Действие | Тип | Описание |
---|---|---|
| string | Припарковать вызов. При указании слота вызов будет припаркован в нужный слот. Без указания слота будет выбран случайный слот.Всего слотов доступно от 1 до 9. Указание номера слота обязательно. Количество слотов = количеству возможных одновременных вызовов timeout ожидания на парковке- 3 минуты, по истечении этого времени вызов вернется к добавочному, от имени которого произошла парковка. |
| string | Соединить текущий вызов с случайным, если слот не указано, либо с указанным слотом, если он задан явно |
| string | При указании слота- уточняет Указание номера слота обязательно. Уточняет какой uuid (часть от call_api_id) там припаркован. Без указания слота ресурс вернет свободные слоты в данный момент. может быть от 1 до 9 |
Пример использования:
Code Block | ||
---|---|---|
| ||
Входящий звонок(может быть и исходящий - не важно) на добавочный 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 | ||
---|---|---|
| ||
Нам нужно запомнить CallAPIID, по нему будет запрошен ресурс PUT /extension/{extension_id}/valet_park/{call_api_id} Также из CallAPIID можно узнать UUID, этот UUID возвращается при запросе информации по слоту. Можно будет понять вызов этого CallAPIID все еще на парковке или его там уже нет. |
Code Block | ||
---|---|---|
| ||
Если отправить запрос на 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"} |
...