Приведу пример настройки сервиса TurboSMS в ABillS, который я использовал для отправки клиентам отчетов Ureports в Viber, а также отправки в Viber фискальных чеков Checkbox.
В первую очередь заключаем договора с TurboSMS, регистрируем имя отправителя Viber в панели TurboSMS.
В конфигурации /usr/abills/libexec/config.pl я указывал добавление +380 к началу номера, а также что номер должен состоять из 10 символов, например 0981234567:
$conf{SMS_NUMBER_EXPR} = '^0/+380;';
$conf{SMS_NUMBER}='[0-9]{10}';
Так как все мобильные телефоны заносились без +380 и когда-то давно я указал параметр который разрешает только 10 цифр в поле мобильный телефон:
$conf{CELL_PHONE_FORMAT}='\d{10}';
Также указал еще параметры:
$conf{SMS_CONTACT_ID} = '1';
$conf{SMS_TURBOSMS_VIBER} = 1;
$conf{SMS_TURBOSMS_VIBER_TOKEN}='ixnfo.com';
$conf{SMS_TURBOSMS_VIBER_URL}='https://api.turbosms.ua/message/send.json';
$conf{SMS_TURBOSMS_MESSAGE_HEADER}='IXNFO';
$conf{SMS_TURBOSMS_VIBER_COUNTRY_CODE}='38';
$conf{SMS_TURBOSMS_TRANSACTIONAL}='1';
$conf{SMS_TURBOSMS_DBHOST} = 'sql.turbosms.ua';
$conf{SMS_TURBOSMS_DBNAME} = 'users';
$conf{SMS_TURBOSMS_DBCHARSET}= 'utf8';
$conf{SMS_TURBOSMS_USER} = 'ixnfo.com';
$conf{SMS_TURBOSMS_PASSWD} = 'xxx';
$conf{SMS_TURBOSMS_TABLE} = 'ixnfo';
#$conf{SMS_TURBOSMS_SEND_TIME}= '12:00:00';
#$conf{SMS_TURBOSMS_SEND_FEES}=0;
#$conf{SMS_TURBOSMS_DEBUG} = 6;
$conf{SMS_TURBOSMS_SIGN}='IXNFO';
$conf{SMS_TURBOSMS_TTL}='28800';
$conf{UREPORTS_SKIP_ACTIVATE_SMS}=1;
#$conf{UREPORTS_ROUNDING}=1;
$conf{UREPORTS_ALLOWED_TYPES} = 'Viber';
$conf{EXTRECEIPTS_USER_CELL_PHONE}='1';
$conf{EXTRECEIPTS_SEND_USER}='Viber';
$conf{EXTRECEIPTS_EXT_RECEIPT_INFO}=1;
Также я добавил задания в /etc/crontab (первое выполняется ежедневно в 10 утра для рассылки отчетов Ureports, второе выполняется каждые 30 минут для получения статуса сообщений, которые можно посмотреть в ABillS меню Отчеты — Оповещения):
1 10 * * * root /usr/abills/libexec/ureports_sender.pl
*/30 * * * * root /usr/abills/libexec/billd sms_status
Сообщения из ABillS отправляются как транзакционные, поэтому перед отправкой необходимо добавить шаблоны сообщений в панели TurboSMS https://turbosms.ua/pattern.html, которые модерируются пару дней.
Без подтвержденного шаблона в turbosms, сообщение не отправится и в отправленых Viber в админ панели turbosms его тоже не будет, будет ошибка (но не всегда):
"response_status":"NOT_ALLOWED_MESSAGE_TRANSACTION_PATTERN"
В транзакционном сообщении Viber разрешается до 500 символов. В переменной нельзя передать список, а лишь несколько слов, количество я не знаю, его определяет Viber, но это можно протестировать или узнать у менеджера TubroSMS. Но мы отправляли в переменно десятки слов, проблем с этим не было. Также если ничего не передать в любой из переменных, то сообщение может отправиться как рекламной, поэтому обязательно нужно что-то передавать.
Приведу примеры нескольких своих шаблонов, например для отправки ссылки на фискальный чек Checkbox:
https://%1%.checkbox.in.ua/api/v1/receipts/%2%/png
Отчет Ureports №11:
У Вас недостатньо коштів для активації тарифу наступного місяця.
Депозит: %1%
Кредит: %2%
Абон. плата за місяць: %3%
Гарного дня!
Отчет Ureports №13 (я рассылаю только этот отчет):
Через %1% дні закінчення послуги.
Щомісячний платіж: %2%
На рахунку: %3%
ID: %4%
Гарного дня!
Шаблон по которому мы отправляли заявки работникам через самописную систему (вот в переменной после «Текст заявки:» как раз и отправляли десятки слов):
Вид заявки: %1%
№ заявки: %2%
Адреса: %3%
Телефон клієнта: %4%
Текст заявки: %5%
Виконати до %6%
Гарного дня!
Вид заявки: Обслуговування
№ заявки: 11278
Адреса: Засулля вул. Лісна, 290
Телефон клієнта: 0670000000
Текст заявки: Червона лампочка на модемі
Виконати до 15.06.2022
Гарного дня!
Время жизни сообщения (TTL) по умолчанию 3600 (1 час), по истечении которого, если пользователь не в сети Viber, то сообщение считается не доставленным и оплата за сообщение не взымается, можно изменить TTL передав по API другое значение.
Был еще случай, когда у пользователя были отключены бизнес сообщения, он их включил, но нашего отправителя не видел в заблокированных, даже спустя несколько дней он не получал сообщения, была ошибка NOT_ALLOWED_NUMBER_STOPLIST. В списке подписчиков в панели TurboSMS я видел этого пользователя и что он отписался определенного числа (когда ему пришло первое сообщение, которое он даже не видел так как были отключены бизнес сообщения). Написал в поддержку TurboSMS по этому поводу и они убрали из своего игнор листа.
Также однажды у Viber были какие-то проблемы и сообщения перестали отправляться, со статусом Rejected, я написал в поддержку TurboSMS, они связались с поддержкой Viber и через несколько часов проблема была решена.
Также был случай когда возникла ошибка подключения к mysql серверу sql.turbosms.ua, поддержка turbosms посоветовала изменить имя пользователя и пароль, после изменении имени пользователя база данных будет назваться аналогично имени пользователя. После этого подключение успешно выполнилось.
Официальная документация ABillS http://abills.net.ua:8090/display/AB/Sms
API документация https://turbosms.ua/api.html
SQL запрос на количество отправленных сообщений сегодня, можно мониторить через zabbix например и сообщать когда отправлено больше чем обычно:
SELECT count(*) FROM ureports_log WHERE execute >=CURDATE();
Смотрите другие мои статьи про ABIllS
Скрипт отправки СМС через Goip4 шлюз для ABillS