Flysip B2BUA может использовать внешний скрипт для перезаписи CLI, CLD. Для этой цели B2BUA использует скрипт /var/env<I_ENVIRONMENT>/scripts/external_translator (для версий <=4.5 /home/ssp/scripts/external_translator.<I_ENVIRONMENT>), если он существует.
B2BUA отправляет на стандартный ввод скрипта CLI, CLD и i_account, например:
CLI=1234\n CLD=4321\n ORIG_CLI=81234\n ORIG_CLD=94321\n I_ACCOUNT=123\n \n |
Полный список предоставляемых полей см. ниже.
После получения пустой строки сценарий может использовать какой-либо алгоритм для перезаписи CLI и CLD, а затем он ДОЛЖЕН отправить их отдельными строками текста — CLI, CLD и пустой строкой. Например:
CLI=123\n CLD=432\n \n |
Если сценарий не настроен на перезапись чего-либо, он должен вернуть CLI и CLD без изменений.
Можно применить несколько необязательных сценариев действий:
- FAIL=<yes|no> — вы можете использовать это поле, чтобы сообщить, что вызов должен завершиться неудачно. Пример: FAIL=да
- RESULT=<integer> - результат для ответа вызывающей стороне. Возможные значения: от 400 до 699, исключая 401 и 407, по умолчанию 500. Это поле используется, когда FAIL=yes. Пример: РЕЗУЛЬТАТ=403
- COST=<float> - это значение будет добавлено к общей стоимости звонка. Пример: СТОИМОСТЬ=0,01
ПРЕДУПРЕЖДЕНИЕ! Для достижения максимальной производительности скрипт никогда не должен завершаться, а должен продолжать обрабатывать следующую порцию данных.
Дистрибутив SSP поставляется с образцом сценария /home/ssp/scripts/external_translator.sample, который вы можете настроить в соответствии со своими целями:
#!/bin/sh while true; do read LINE || exit case "$LINE" in CLI=*) CLI=${LINE#CLI=} ;; CLD=*) CLD=${LINE#CLD=} ;; ORIG_CLI=*) ORIG_CLI=${LINE#ORIG_CLI=} ;; ORIG_CLD=*) ORIG_CLD=${LINE#ORIG_CLD=} ;; "") echo "CLI=$CLI" echo "CLD=$CLD" echo CLI="" CLD="" ;; esac done
Переводчик применяется после аутентификации звонка. Правила перевода применяются в следующем порядке:
- Вызов дела был аутентифицирован для учетной записи:
1. Правила трансляции CLI/CLD из правила аутентификации (если есть)
2. Правила трансляции CLI/CLD от Пользователя (если есть)
3. Запускается external_translator и обрабатывает поля, предоставленные ему Flysip (см. список ниже)
4. На основе вывода external_translator Flysip выполняет авторизацию звонков (тарификация, маршрутизация, выбор тарифа, маршрута и т.д.)
5. Перед отправкой звонка за пределы применяются правила трансляции из Connection/Trunk.
- Вызов дела был аутентифицирован для DID
1. Правила трансляции CLI/CLD из DID Authentication Rule и DID (если есть)
2. Правила трансляции CLI/CLD от Пользователя, назначенного DID, игнорируются.
3. Запускается external_translator и обрабатывает поля, предоставленные ему Flysip (см. список ниже)
4. На основе вывода external_translator Flysip выполняет авторизацию звонков (тарификация, маршрутизация, выбор тарифа, маршрута и т.д.)
5. Перед отправкой звонка за пределы применяются правила трансляции из Connection/Trunk.
Поля, предоставляемые Flysip скрипту external_translator:
I_ACCOUNT ORIG_CLI ORIG_CLD CLI CLD CALLER_NAME P_ASSERTED_ID REMOTE_PARTY_ID REMOTE_IP DIVERSION