Skip to end of metadata
Go to start of metadata

Управление звонком

ringReady

Ответ 180 Ringing на входящий INVITE запрос

{
    "ringReady": ""
}

preAnswer

Ответ 183 Session Progress на входящий INVITE запрос

{
    "preAnswer": ""
}

answer

Ответ 200 Ok на входящий INVITE запрос

{
    "answer": ""
}

sipRedirect

Ответ SIP 302 Moved Temporarily на входящий INVITE запрос

{
    "sipRedirect": "sip:[email protected]"
}

ringback

Приложение позволяет задать тон КПВ либо медиафайл

{
    "ringback": {
        "all": true,
        "call": {
            "name": "%(1000,6000,425);loops=-1",
            "type": "tone"
        },
        "hold": {
            "id": 10
        },
        "transfer": {
            "name": "%(1000,6000,425);loops=-1",
            "type": "tone"
        }
    }
}

updateCid

Приложение позволяет изменить значение номера и имени абонента

{
    "updateCid": {
        "name": "Новый клиент",
        "number": "8${effective_caller_id_number}"
    }
}

park

Удержание звонка на стороне сервера

{
    "park": {
        "auto": "in",
        "lot": "1000-2000",
        "name": "myPark"
    }
}

conference

Вход в конференцию

{
    "conference": {
        "flags": [
            "audio-always"
        ],
        "name": "CR-$1",
        "profile": "video-mcu-stereo"
    }
}

bridge

Инициация Б-канала с дальнейшим соединением с А-каналом

{
    "bridge": {
        "endpoints": [
            {
                "extension": "1008",
                "idle": true,
                "type": "user"
            },
            {
                "dialString": "380732327758",
                "name": "lifecell_out",
                "type": "gateway",
                "parameters": {
                    "origination_caller_id_number": "380732327757",
                    "sip_h_X-FWD-Original": "${caller_id_number}"
                }
            }
        ]
    }
}

hangup

Завершение звонка. В качестве параметра может быть указан код ответа из списка Hangup cause

{
    "hangup": ""
}

Медиавзаимодействие

inBandDTMF

Управление in-band DTMF

{
  "inBandDTMF": "start"
}

flushDTMF

Очистка буфера ввода абонентом

{
  "flushDTMF": true
}

playback

Воспроизведение медиафайла с возможностью сохранить ввод абонента в переменную

{
    "playback": {
        "files": [
            {
                "name": "its_${lang}.wav"
            }
        ],
        "getDigits": {
            "flushDTMF": true,
            "max": 4,
            "min": 1,
            "setVar": "getIVR",
            "timeout": 3000,
            "tries": 1
        }
    }
}

recordFile

Записать медиа в файл

{
    "recordFile": {
        "maxSec": 30,
        "name": "${uuid}",
        "silenceHits": 5,
        "terminators": "#",
        "type": "mp3",
        "voiceMail": true
    }
}

recordSession

Управление записью медиапотока в файл

{
    "recordSession": {
        "action": "start",
        "bridged": false,
        "followTransfer": true,
        "minSec": 2,
        "stereo": true,
        "type": "mp3"
    }
}

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

{
    "generateLink": {
        "expire": 604800,
        "server": "https://dev.webitel.com",
        "set": "record_link"
    }
}

Синтез и распознавание речи

tts

Генерация речи

{
    "tts": {
        "language": "ru-RU",
        "provider": "google",
        "text": "<speak>Ваш номер договора ${usr_selected_prolongation}.</speak>",
        "textType": "ssml"
    }
}

getSpeech

Асинхронное распознавание речи

[
    {
        "set": {
            "GOOGLE_DISABLE_BREAK": "true",
            "GOOGLE_OFFSET": "14000",
            "GOOGLE_SILENCE_THRESHOLD": "100",
            "GOOGLE_SPEECH_ALTERNATIVE_LANG": "ru-RU",
            "GOOGLE_SPEECH_ENABLE_AUTOMATIC_PUNCTUATION": "true",
            "GOOGLE_SPEECH_LANG": "uk-UA"
        }
    },
    {
        "playback": {
            "files": [
                {
                    "name": "media_file_menu.wav"
                },
                {
                    "name": 3500,
                    "type": "silence"
                }
            ],
            "getSpeech": {}
        }
    },
    {
        "set": {
            "usr_text": "${google_transcript}"
        }
    }
]

Работа с очередями

joinQueue

Постановка абонента в очередь

{
    "joinQueue": {
        "bucket_id": 1,
        "priority": 100,
        "agent": {
            "extension": "1000"
        },
        "queue": {
            "id": 1
        },
        "ringtone": {
            "id": 126,
            "type": "wav"
        },
        "timers": [
            {
                "actions": [
                    {
                        "playback": {
                            "files": [
                                {
                                    "name": "hold_акции.wav"
                                }
                            ]
                        }
                    }
                ],
                "interval": 1,
                "tries": 20
            }
        ],
        "transferAfterBridge": {
            "id": 2
        }
    }
}

joinAgent

Постановка абонента в личную очередь оператора

{
    "joinAgent": {
        "agent": {
            "extension": "1008"
        },
        "bridged": [
            {
                "log": "request 1C"
            }
        ],
        "cancel_distribute": true,
        "processing": {
            "enabled": true,
            "renewal_sec": 5,
            "sec": 30
        },
        "queue_name": "${cc_queue_name}"
    }
}

getQueueAgents

Получить информацию по количеству операторов в зависимости от статуса в очереди

{
    "getQueueAgents": {
        "queue": {
            "id": 2
        }	,
        "set": {
            "res_count": "count",
            "res_offline": "offline",
            "res_online": "online",
            "res_pause": "pause",
            "res_waiting": "waiting"
        }
    }
}

getQueueMetrics

Рассчитать показатели по очереди

{
    "getQueueMetrics": {
        "bucket": null,
        "calls": "complete",
        "field": "sl",
        "lastMinutes": 3800,
        "metric": "sl",
        "queue": {
            "id": 19
        },
        "set": "varResult",
        "slSec": 20
    }
}

ccPosition

Текущая позиция абонента в очереди

{
    "ccPosition": {
        "set": "pos"
    }
}

ewt

Расчет среднего времени ожидания абонентом в очереди

{
    "ewt": {
        "queue_ids": [
            8
        ],
        "setVar": "ewt",
        "strategy": "puzzle"
    }
}

memberInfo

Найти информацию по абоненту дайлера

{
    "memberInfo": {
        "bucket_id": 1,
        "completed": false,
        "destination": "${caller_id_number}",
        "name": "Customer Name",
        "queue_ids": [
            8
        ],
        "set": {
            "member_var1": "sum",
            "member_var2": "credit"
        },
        "today": true
    }
}

patchMembers

Изменить информацию по абоненту дайлера

{
    "patchMembers": {
        "bucket_id": 1,
        "completed": false,
        "destination": "${caller_id_number}",
        "name": "Customer Name",
        "queue_ids": [
            8
        ],
        "patch": {
            "bucket_id": 2,
            "name": "sum",
            "priority": "credit",
            "ready_at": 2147483647,
            "stop_cause": "cancel",
            "variables": {
                "new_var": "var"
            }
        },
        "today": true
    }
}

callbackQueue

Добавить абонента в оффлайн очередь

{
    "callbackQueue": {
        "communication": {
            "destination": "${caller_id_number}",
            "type_id": 1
        },
        "holdSec": "1",
        "name": "${caller_id_number}",
        "queue_id": 26,
        "variables": {
            "DPD": "${DPD}",
            "internal_operator_id": "${internal_operator_id}",
            "loan_id": "${Loan}"
        }
    }
}

confirm

Установка значений до набора абонента дайлером

{
    "confirm": {
        "destination": "8${destination_number}",
        "display": "${agent_extension}",
        "export": [
            "new_variable"
        ]
    }
}

cancel

Отмена текущей попытки набора абонента в дайлере

{
    "cancel": {
        "description": "do not call",
        "export": [
            "new_var"
        ],
        "nextDistributeSec": 0,
        "stop": false
    }
}

abandoned

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

{
    "abandoned": {
        "export": [
            "retry"
        ],
        "maxAttempts": 100500,
        "waitBetweenRetries": "120"
    }
}


lastBridged

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

{
    "lastBridged": {
        "calls": {
            "inbound": "all",
            "outbound": "all",
            "queue_ids": [
                1, 2
            ]
        },
        "hours": 24,
        "number": "380932327757",
        "set": {
            "my_ag": "agent_id",
            "my_ext": "extension",
            "my_q": "queue_id"
        }
    }
}
  • false - Не учитывать данное направление звонка
  • bridged - Попытки по которым было соединение
  • attempt - Попытки без соединения
  • all - Все попытки

Голосовые приложения

  • No labels
Write a comment...