VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

диалплан биллинг

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
Diana92
Сообщения: 34
Зарегистрирован: 21 янв 2014, 07:16

диалплан биллинг

Сообщение Diana92 »

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

Код: Выделить всё

exten => _X.,1,MYSQL(Connect connid localhost asterisk_user Some_Pass_Aster01 asterisk)
exten => _X.,n,MYSQL(Query resultid ${connid}SELECT\SUM(billsec)\FROM\cdr\WHERE\src=${CALLERID(num)})
exten => _X.,n,MYSQL(Fetch fetchid ${resultid} billing)
exten => _X.,n,MYSQL(Clear ${resultid})
exten => _X.,n,GotoIf($["${fetchid}"="1"]?true:false)
exten => _X.,n,GotoIf($["${billing}" < "1"]?call:end)
exten => _X.,n(call),Dial(SIP/300)
exten => _X.,n,MYSQL(Clear ${resultid})
exten => _X.,n,Hangup()
exten => _X.,n(false),Playback(goodbye)
exten => _X.,n,Hangup()
есть у меня база, создала я там табличку cdr, он данные о звонках берет и записывает, все работает нормально

только вот проблема в диалплане, делаю звонок он мне говорит goodbye, значит дело в запросе, fetchid возвращает 0 Но почему?

И да на всякий случай лог

Код: Выделить всё

== Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Executing [300@from-internal:1] MYSQL("SIP/301-00000002", "Connect connid localhost asterisk_user Some_Pass_Aster01 asterisk") in new stack
    -- Executing [300@from-internal:2] MYSQL("SIP/301-00000002", "Query resultid 3SELECT\SUM(billsec)\FROM\cdr\WHERE\src=301") in new stack
    -- Executing [300@from-internal:3] MYSQL("SIP/301-00000002", "Fetch found  billing") in new stack
    -- Executing [300@from-internal:4] MYSQL("SIP/301-00000002", "Clear ") in new stack
    -- Executing [300@from-internal:5] GotoIf("SIP/301-00000002", "0?true:false") in new stack
    -- Goto (from-internal,300,10)
    -- Executing [300@from-internal:10] Playback("SIP/301-00000002", "goodbye") in new stack
    -- <SIP/301-00000002> Playing 'goodbye.gsm' (language 'RU')
    -- Executing [300@from-internal:11] Hangup("SIP/301-00000002", "") in new stack
  == Spawn extension (from-internal, 300, 11) exited non-zero on 'SIP/301-00000002'
    -- Executing [h@from-internal:1] Macro("SIP/301-00000002", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/301-00000002", "1?endmixmoncheck") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] NoOp("SIP/301-00000002", "End of MIXMON check") in new stack
    -- Executing [s@macro-hangupcall:10] GotoIf("SIP/301-00000002", "1?nomeetmemon") in new stack
    -- Goto (macro-hangupcall,s,28)
    -- Executing [s@macro-hangupcall:28] NoOp("SIP/301-00000002", "End of MEETME check") in new stack
    -- Executing [s@macro-hangupcall:29] GotoIf("SIP/301-00000002", "1?noautomon") in new stack
    -- Goto (macro-hangupcall,s,34)
    -- Executing [s@macro-hangupcall:34] NoOp("SIP/301-00000002", "TOUCH_MONITOR_OUTPUT=") in new stack
    -- Executing [s@macro-hangupcall:35] GotoIf("SIP/301-00000002", "1?noautomon2") in new stack
    -- Goto (macro-hangupcall,s,41)
    -- Executing [s@macro-hangupcall:41] NoOp("SIP/301-00000002", "MONITOR_FILENAME=") in new stack
    -- Executing [s@macro-hangupcall:42] GotoIf("SIP/301-00000002", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,45)
    -- Executing [s@macro-hangupcall:45] GotoIf("SIP/301-00000002", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,48)
    -- Executing [s@macro-hangupcall:48] GotoIf("SIP/301-00000002", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,50)
    -- Executing [s@macro-hangupcall:50] AGI("SIP/301-00000002", "hangup.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
    -- <SIP/301-00000002>AGI Script hangup.agi completed, returning 0
    -- Executing [s@macro-hangupcall:51] Hangup("SIP/301-00000002", "") in new stack
  == Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'SIP/301-00000002' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/301-00000002'
Поправьте меня или укажите на ошибку, я в этом новичок, возможно кое что не так делаю?
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: диалплан биллинг

Сообщение ded »

Вам надо бы прочитать про AGI, и осваивать его помаленьку. Ибо делать mysql запросы из диал-плана - не дело.
Потом Вы обнаружите, что ничего писать уже не надо, ибо всё уже написано, и доступно, надо только разобраться.
A2billing
Diana92
Сообщения: 34
Зарегистрирован: 21 янв 2014, 07:16

Re: диалплан биллинг

Сообщение Diana92 »

Спасибо за совет) я в курсе про a2billing. Но я хочу сама попробовать сделать хоть и простенький биллинг. Делаю для себя. Но у меня почему то к базе не подключается :(
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: диалплан биллинг

Сообщение april22 »

после долгих изучений вопроса - AGI - это все .....

все просто :-) намекну .... опция L в Dial ;-)
ded писал(а):Потом Вы обнаружите, что ничего писать уже не надо, ибо всё уже написано, и доступно, надо только разобраться.
песен еще не написано , сколько ....... (с) не я ....
Своими вопросами , вы загоняете меня в ГУГЛЬ.
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: диалплан биллинг

Сообщение tma »

Diana92 писал(а):

Код: Выделить всё

exten => _X.,n,MYSQL(Clear ${resultid})
...
exten => _X.,n(call),Dial(SIP/300)
exten => _X.,n,MYSQL(Clear ${resultid})
У Вас тут походу ошибка - Вы в одном случае дважды вызываете Clear...
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: диалплан биллинг

Сообщение virus_net »

tma писал(а):У Вас тут походу ошибка
+1
Сначала вызывается Clear, а только потом начинаете анализировать значения переменных
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
Asterisk cmd MYSQL

Код: Выделить всё

exten => _X.,1,MYSQL(Connect connid localhost dbuser dbpass dbname)
exten => _X.,2,MYSQL(Query resultid ${connid} SELECT\ scriptname\ from\ mac2pin\ where\ userid=${CALLERIDNAME})
exten => _X.,3,MYSQL(Fetch fetchid ${resultid} AGIScript)
exten => _X.,4,GotoIf($[${AGIScript} = NULL]?5:7)
exten => _X.,5,AGI(${DefaultAGIScript},${EXTEN})
exten => _X.,6,Goto(_X.,8)
exten => _X.,7,AGI(${AGIScript},${EXTEN})
exten => _X.,8,MYSQL(Clear ${resultid})
exten => _X.,9,MYSQL(Disconnect ${connid})
exten => _X.,10,Hangup
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH