AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

автоинформатор для службы такси... помогите\подскажите...

Newbies/FAQ Forum 12 сообщений -
#1

что имеется:
1. asterisk настроенный на входящие звонки от клиентов.
2. БД с клиентами\таксистами крутится на Postgresql.
3. доступ к базе через odbc. если астериску нужно что либо выдернуть из базы, делаю это например так...

exten => 2,n,set(clientnumber=${ODBC_SQL(SELECT client.phone_number FROM public.client, public.order_cur, public.bort, public.driver WHERE order_cur.id_bort = bort.id AND order_cur.id_client = client.id AND driver.id.....
exten => 2,n,verbose(номер клиента =${clientnumber})
exten => 2,n,Dial(${TEL1}/${clientnumber})

теперь подошло время создать автоинформатор клиентов о подъехавшей машине.
4. сделал в базе для автоинформатора такую таблицу....

id ; id_order ; phone ; message ; ring ; ok
1 ; 3 ; +7918111111 ; "машина подъехала, выходите" ; 0.wav ; false
2 ; 4 ; +7918222222 ;"машина ближе 500м, собирайтесь" ; 500.wav ; false

в эту таблицу периодически падает инфа о информируемом номере и типе информирования.
если заполнено поле message, то отправить смс с этим текстом, если заполнено поле ring, проиграть соответствующий файл.
последнее поле "ok" - если true то оповещение прошло успешно, не оповещать.

как астериску с периодичностью например раз в секунду обрабатывать эту табличку?
подскажите в какую сторону копать.....

_________________
asterisk 1.8 ubuntu 11.10
#2

1) Сron, но он только раз в минуту обрабатывает
2) Создавать самим call-файлы
3) AMI
4) Фоновый сервер, в цикле делающий что нужно.

_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
#3

зачем писать 4 варианта?
вы мне предлагаете изучить и опробовать все 4 варианта?

я ведь не спросил какие способы существуют....
я попросил посоветовать один способ, который проще\лучше подойдёт в данной ситуации.

кстати буду благодарен за ссылочку где про этот способ почитать.....

Added after 6 minutes:

перефразирую немного вопрос...

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

_________________
asterisk 1.8 ubuntu 11.10
#4

Цитата:
зачем писать 4 варианта?
вы мне предлагаете изучить и опробовать все 4 варианта?

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

Я думаю Вам стоит обратится в раздел Бизнес.

_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
#5

в смысле в раздел "работа"?
_________________
asterisk 1.8 ubuntu 11.10
#6

Во-первых а постгрес есть платины к руби и вроде пхп. И по триггеру on create, on update можно что то делать

Во-вторых, ведь данные кто-то заводит в базу? Значит в приложении есть ювозможность и звонок сделать.

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

Если вы не можете вызвать скрипт генерации звонка, а надо обработать базу - пишите фоновый сервер, благо там всего строк 5 кода, ну 10, если на баш шелле.
#7

откуда столько категоричности к call-файлам ? пользуюсь call файлами, ничего не зависает. Может Вы просто их готовить не можете ? Smile
#8

делал callback систему, несколько дней и астериск перестает работать со спулом. да, звонков было много - 1500-2000 в час.
после смены колл файлов на астериск менеджер, система стала заметно стабильнее.

Added after 3 minutes:

по теме, подумал, самое то - сервер, что постоянно берет записи из базы, найденные обрабатывает, формирует запрос к менеджеру, колл файлы или astcli (asterisk -rx) originate SIP/trunk/customer extension notify@notify_extension

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

в простейщем случае да, но после первого затыка с одновременно сгенерированными новыми 1000 запросами придется задуматься о лимитах исходящего канала / количестве текущих звонков / проверках статусов.

Ну а автору выбрать один из вариантов от aven и andyk74 и реализовать это в силу своих возможностей ибо всё выше перечисленное работает.
#10

Господа.

Насчет call-файлов и у меня проблем не возникало. Но с оговоркой: должна быть ЧЕТКО продумана логика работы генератора-сервера. Пишется программа-сервер (на чем угодно) с флагами/контролем/... т.е. любым из придуманных способов аналитики текущего состояния и т.д. А простое безконтрольное автосрабатывание - путь в никуда.
Кроме всего прочего - не забывайте что ВАЖНО вести учет и дозвона и контролировать дозвонились/нет.
Так что простым наскоком сие не решить.

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#11

А кто сказал, что не было контроля и т.д.? Все было - но при больших объемах звонков (как писал, колбэк система, оператор связи), на кол файлах, астериск затыкался.

А - контроль транков, LCR и все прочее было. И единственное изменение - файлов на астериск менеджер - систему сделал много стабильнее.
#12

короче буду делать так:

1. выбрал AMI

2. в постгресе сделал таблицу
CREATE TABLE ami
(
id serial NOT NULL,
to_asterisk character varying,
from_asterisk character varying,
status boolean,
CONSTRAINT asterisk_manager_id_pk PRIMARY KEY (id )
)

3. в поле to_asterisk записываются данные типа
Action: Events
EventMask: off

поле статус на этом этапе null

напишу на яве прослойку, которая раз в секунду будет делать
1. select into id_, to_ast id, to_asterisk from ami where status isnull; -- запрос данных
2. отправка данных в AMI
3. update ami set status=false where id=id_; -- пометка, что запись отослана на астериск

также постоянно слушаться порт от AMI и всё услышанное
insert into ami (from_asterisk) values (то что услышал от астериска)

поделитесь скриптом на bash (bash не знаю)
интересно посмотреть как такое на bash можно сделать

_________________
asterisk 1.8 ubuntu 11.10