Jump to content

Recommended Posts

Posted (edited)

Встала задача оповещять клиентов о балансе через SMS.

В состав Ланбиллинга уже входит скрипт script_notify для рассылки оповещений по e-mail, ланбиллинг передает скрипту адрес почты, баланс, и тд. Говорил с разработчиками реализовать возможность передачи поля номер нет, если не использовать поле e-mail тоесть вписывать номер туда, но и тут есть свой минус оповещение будет приходить 12.00 боюсь не рады будут абоненты такой СМС.

Есть возможность реализовать отдельный скрипт который сам будет цепляться к базе и рассылать оповещения, но сам реализовывать буду долго поскольку я больше копи-пастер чем программист.

В качестве сервиса для рассылки хочу использовать https://my.atompark.com скрипт в прикрепленном фале, скрипт стандартный с сайта, разве что сообщение и номер будет получать в атрибутах, если нужны комментарии пишите.

Хотел узнать у кого уже был опыт реализации, что использовали, грабли которые можно поймать, вообщем поделитесь опытом.

Зарание спасибо)

SMS.php

Edited by nousaibot
Posted

Мы решили этот вопрос использованием userside - он синхронизируется с ланбиллингом и из userside мы шлем смски.

Posted

Мой Вам совет. Допиливаете сами - кишки у Lanbillin простые. Кормили их ТП некоторое время - результат не получили. ТП кормили нас завтраками несколько кварталов, но ipv6 поддержка так и не разработана.

Posted

Мой Вам совет. Допиливаете сами - кишки у Lanbillin простые. Кормили их ТП некоторое время - результат не получили. ТП кормили нас завтраками несколько кварталов, но ipv6 поддержка так и не разработана.

 

Так я сам собственно и хочу, но знаний пока маловато, хотел узнать кто-то наверняка уже реализовал.

Posted

nousaibot, мы не реализовывали, но я могу подсказать. в их личном кабинете есть описания структуры БД.

Вас должны интересовать таблицы:

agreements - Договоры пользователей (лицевые счета)

accounts - Пользователи АСР

связи по ключам там так же описаны

В конечном итоге должно получиться что-то наподобие (ниже рабочий запрос на выгрузку базы о абонентах):

SELECT DISTINCT 
agreements.number AS DOGOVOR,
agreements_ext.closed_on AS CLOSED,
vgroups.login AS LOGIN,
tarifs.descr as  TARIFS,
ROUND(agreements.balance,2) AS BALANCE,
ROUND(agreements.credit,2) AS CREDIT,
vgroups.blocked AS BLOCK_STATE,
accounts.name AS FIO, 
accounts.phone AS PHONE,
accounts.mobile AS MOBILE,
CONCAT(address_area.short,' ',address_area.name) AS RAION,
CONCAT(address_city.short,' ',address_city.name) AS GOROD ,
CONCAT(address_settl.short,' ',address_settl.name )AS SELO ,
CONCAT(address_street.short,' ',address_street.name)AS ULICA ,
address_building.name AS BUILDING ,
address_flat.name AS KV 

FROM accounts
LEFT JOIN accounts_addr ON accounts.uid = accounts_addr.uid
LEFT JOIN address_area ON accounts_addr.area = address_area.record_id
LEFT JOIN address_city ON accounts_addr.city = address_city.record_id
LEFT JOIN address_settl ON accounts_addr.settl = address_settl.record_id
LEFT JOIN address_street ON accounts_addr.street = address_street.record_id
LEFT JOIN address_building ON accounts_addr.building = address_building.record_id
LEFT JOIN address_flat ON accounts_addr.flat = address_flat.record_id
LEFT JOIN agreements ON accounts.uid = agreements.uid
LEFT JOIN vgroups ON agreements.uid = vgroups.uid
LEFT JOIN agreements_ext ON agreements_ext.agrm_id = agreements.agrm_id
LEFT JOIN tarifs on vgroups.tar_id = tarifs.tar_id


WHERE 	accounts.archive LIKE (0) AND
accounts.template LIKE (0) AND 
vgroups.id LIKE(1) AND
LENGTH(vgroups.login) < 10 AND
LENGTH(agreements.number)>7 AND
LENGTH(accounts.name)>1 AND 
( address_settl.name IS NOT NULL OR 
  address_city.name IS NOT NULL)
ORDER BY agreements.number ASC

 

Для "умников" что запрос не оптимален по производительности → напишите как надо. ;)

 

Язык программирования на Ваш выбор. Мне Python нравится, например. Получаете эту таблицу, выдергиваете из нее значения и передаете API смс-гейта. Все просто.

Posted

Только лучше делать через php api, а не напрямую из базы. Структура БД у них вовсе не постоянная

да, можно через SOAP PHP API. Работает не удобно. Уж лучше по-старинке темболее что обновлять эту "поделку" мы не собираемся будем сами допиливать что есть.

Если данные дергаете часто очень рекомендую выгружать это в REDIS и оттуда таскать. :)

Posted

Реализовали через стандартный скрипт оповещения. В качестве поля для хранения телефона для смс использовали поле "Факс" и при вызове скрипта смотрим, есть ли там номер, в нужном ли он формате и вообще, заказывал ли такую услугу абонент. Если все ок - шлем смс.

Posted

Реализовали через стандартный скрипт оповещения. В качестве поля для хранения телефона для смс использовали поле "Факс" и при вызове скрипта смотрим, есть ли там номер, в нужном ли он формате и вообще, заказывал ли такую услугу абонент. Если все ок - шлем смс.

На сколько я понял стандартный скрипт не умеет отсылать смс, по крайней мере в версии 2,8. И переменной передаюшей поле факс в стандартном скрипте нет (если есть ткните пальцем) есть возможность пердавать поле e-mail тоесть вписывать номера туда.

 

Реализовали через стандартный скрипт оповещения. В качестве поля для хранения телефона для смс использовали поле "Факс" и при вызове скрипта смотрим, есть ли там номер, в нужном ли он формате и вообще, заказывал ли такую услугу абонент. Если все ок - шлем смс.

Если не в лом скинте скрипт, закоментив инфу которую нам знать не нужно.

Posted

На сколько я понял стандартный скрипт не умеет отсылать смс, по крайней мере в версии 2,8. И переменной передаюшей поле факс в стандартном скрипте нет (если есть ткните пальцем) есть возможность пердавать поле e-mail тоесть вписывать номера туда.

 

Естественно он этого не умеет. Но он вызывается когда надо и передает логин учетки абонента, а что еще-то надо? Остальное можно и самому в базе найти.

 

Если не в лом скинте скрипт, закоментив инфу которую нам знать не нужно.

 

все там элементарно: логин учетки передается, берем из базы соответсвующий этому логину uid и по нему смотрим в accounts поле fax. Если там номер телефона есть - формируем нужное сообщение и шлем емайлом на смс-емайл гейт провайдера типа sms.ru

Posted

Конкретно СМС-ками не занимались. А вот уведки по e-mail о приближающемся к нулю балансе делали.

В my_script_notify :

TO_SENT_FILENAME="/usr/local/billing/scripts/to_sent.txt"
echo $1 " " $2 " " $3 " " $4  >> $TO_SENT_FILENAME

 

И потом по крону запускаем my_send_notify_to_user

#!/bin/sh
TO_SENT_FILENAME="/usr/local/billing/scripts/to_sent.txt"
ALREADY_SENT_FILENAME="/usr/local/billing/scripts/already_sent.txt"

awk '{a= "echo Баланс вашей учетной записи  " $1 " менее " $4 " рублей и составляет "
$2 " рублей. \r  Не забудьте пополнить лицевой счет. \r  Справки по телефону UU-YY-YY и в личном каби
нете http://billing.YYYYYY.ru/client \r  С уважением, служба технической поддержки ООО YYYYY-Интерне
т." ; system(a " | mail -a \"Content-Type: text/plain; charset=utf-8\" -a \"Reply-To: <root@YYYYY.r
u>\"  -a \"From: <root@YYYYYY.ru>\" -s \"Warning from YYYY-Internet\"  "$3 ) }' $TO_SENT_FILENAME
echo "=======" >> $ALREADY_SENT_FILENAME
date >> $ALREADY_SENT_FILENAME
cat $TO_SENT_FILENAME >> $ALREADY_SENT_FILENAME
rm -rf $TO_SENT_FILENAME

exit 0

 

У части ОПСОСов есть шлюзы e-mail_to_SMS. Например на МТС у нас можно отправить СМС, отправив e-mail на адрес вида 7912хххyyyzzzz@sms.ural.mts.ru

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.