• Вывод нескольких значений из запроса через запятую?

    @SteepNET Автор вопроса
    Все супер! Только в УТ 11.4 будет ДокументСсылка.СчетНаОплатуКлиенту
    Еще добавил Иначе на случай других документов отличных от Счетов на оплату.
    Только вот пока замешался если нет вообще документов связанных ....
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    Immortal_pony, В двойне спасибо! Да ,json как то привычней, хотя от метода с csv тоже не отказался бы...
    На самом деле я в поиске решения, удобного решения для всех, но прежде всего собираюсь обрабатывать этот лог через php, делать выборки и фильтрацию данных, уже даже есть определенные успехи, не знаю как поведет себя все это когда файл начнет быть пухлым ,содержащим 10-ки тысяч записей, но никто не мешает мне начать писать в новый или сделать лимитирование файла скажем посуточно..
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    Vitsliputsli, Вы правы, может быть я делаю не верно, правильнее было бы просто добавлять данныые в БД и оттуда спокойно брать, да но это тоже опыт, за полгода лог накапливает в себе всего 5 мб данных,но статистику из него брать нужно..
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    В общем то все супер, есть небольшая помарка ,если файл был пустой начинается с ,{ но это вообще не проблема, поставил [{ и все ,остальные записи полетели как надо!
    Маленький вопрос, в файле все идет в одну строку, не принциписально конечно, можно каждую запись заставить с новой строки писать без потери функционала?
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    FanatPHP, Стоит цель потом этот файл читать и отбирать из него необходимые данные, думал что из JSON это делать легче будет?
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    Так и не услышал от знатоков , возможно ли дописывать JSON?
  • Дописать в файл json и прочесть его php?

    @SteepNET Автор вопроса
    Спасибо за ответ! Подозревал что так, можно ли попросить Вас простой пример правильно дозаписи в файл что бы можно было их все прочесть?
  • Отправка смс через шлюз Yeastar кириллицей?

    @SteepNET Автор вопроса
    shurshur, Спсибо за ответ! А Вы это смогли? у меня никак не выходит =(
  • Отправка смс через шлюз Yeastar кириллицей?

    @SteepNET Автор вопроса
    А в php как это применить можно? Можно ли сконвертировать обычное сообщение ?
  • Yeastar TG1600 прошивка?

    @SteepNET Автор вопроса
    Не обновляется не так и не так, пробовал всеми способами, в логе TFTP вижу что скачивает файл и пишет complete но в шлюзе крутит колесчо до бесконечности, перезагрузка и сброс не помогает
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Понял Вас, примерно так же и понял, потому как время от времени это происходит ,не постоянно, почему то именно на отбой срабатывает ,когда клиент жмет отбой..
    Спасибо!
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    TRUNK Dial failed due to CHANUNAVAIL HANGUPCAUSE: 21 - failing through to other trunks
    Хотя бывает и норм срабатывает =\
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Да,это я понял, поставил в GUI везде точку, теперь какая то непонятная проблема , всего 4 направления, мегафон,мтс,билайн, и общий по всем нормально звонок идет но на мегафон звонит сразу 3 номера по очереди как только на том конце сбрасывают...
    Можно ли Вас еще разок посмотреть что не так может быть?

    https://pastebin.com/M706GeEp

    Почему именно мегафон...
    Звонк на 79201164909 с 703
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Теперь все ясно! Там прописаны шаблоны ,поэтому не попадает!
    Большое спасибо за помощь, без Вас бы не справился точно!
    Отметил как решение! И много для себя узнал с практической точки зрения благодаря Вам!
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    А вот пример с теми же настройками! Прекрасно срабатывающим номером! И при этом я сбрасывают на том конце и все ок!

    https://pastebin.com/7jy4bzJZ

    Ума не приложу в чем дело...
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Вот на этот номер например не звонит! Я не понимаю почему такая избирательность ,на какие то звонит на какие то нет..
    dialplan show
    dialplan show +79108280465@outbound-restricted-routes
    [ Context 'outbound-restricted-routes' created by 'pbx_config' ]
    '_[+0-9]!' => 1. Noop(======================================================) [pbx_config]
    2. Noop(========= Context OUTBOUND-RESTRICTED-routes =========) [pbx_config]
    3. Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==) [pbx_config]
    4. Noop(======================================================) [pbx_config]
    5. AGI(trunk_hook.php,${EXTEN},${CALLERID(number)}) [pbx_config]
    6. Set(var_trunk_outrt=${trunk_outrt}) [pbx_config]
    7. Noop(========= ${var_trunk_outrt} =========) [pbx_config]
    8. GotoIf($["${var_trunk_outrt}" = "pusto"]?pusto) [pbx_config]
    9. Goto(${var_trunk_outrt},${EXTEN},1) [pbx_config]
    [pusto] 10. Noop(== PUSTO QUIT CUSTOMIZATION ==) [pbx_config]
    11. Macro(user-callerid,LIMIT) [pbx_config]
    12. Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})}) [pbx_config]
    13. Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})}) [pbx_config]
    14. GotoIf($["${BLINDTRANSFER}" == ""]?notblind) [pbx_config]
    15. Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)}) [pbx_config]
    16. Set(ROUTEUSER=${CUT(ENDPOINT,/,2)}) [pbx_config]
    [notblind] 17. GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2) [pbx_config]

    -= 1 extension (17 priorities) in 1 context. =-


    sent to invalid extension
    -- Executing [+79108280465@from-internal:1] NoOp("PJSIP/703-000035fe", "======================================================") in new stack
    -- Executing [+79108280465@from-internal:2] NoOp("PJSIP/703-000035fe", "========= Context OUTBOUND-RESTRICTED-routes =========") in new stack
    -- Executing [+79108280465@from-internal:3] NoOp("PJSIP/703-000035fe", "== Destination: +79108280465 , CID: 703 ==") in new stack
    -- Executing [+79108280465@from-internal:4] NoOp("PJSIP/703-000035fe", "======================================================") in new stack
    -- Executing [+79108280465@from-internal:5] AGI("PJSIP/703-000035fe", "trunk_hook.php,+79108280465,703") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/trunk_hook.php
    -- AGI Script trunk_hook.php completed, returning 0
    -- Executing [+79108280465@from-internal:6] Set("PJSIP/703-000035fe", "var_trunk_outrt=outrt-10") in new stack
    -- Executing [+79108280465@from-internal:7] NoOp("PJSIP/703-000035fe", "========= outrt-10 =========") in new stack
    -- Executing [+79108280465@from-internal:8] GotoIf("PJSIP/703-000035fe", "0?pusto") in new stack
    -- Executing [+79108280465@from-internal:9] Goto("PJSIP/703-000035fe", "outrt-10,+79108280465,1") in new stack
    -- Goto (outrt-10,+79108280465,1)
    [2021-11-11 22:05:00] WARNING[25712][C-00001df8]: pbx.c:4467 __ast_pbx_run: Channel 'PJSIP/703-000035fe' sent to invalid extension but no invalid handler: context,exten,priority=outrt-10,+79108280465,1
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Ошибка такая
    sent to invalid extension
    -- PJSIP/739-000035f2 is ringing
    -- PJSIP/739-000035f2 is ringing
    -- PJSIP/739-000035f2 answered
    -- Executing [+79211025252@from-internal:1] NoOp("PJSIP/739-000035f2", "======================================================") in new stack
    -- Executing [+79211025252@from-internal:2] NoOp("PJSIP/739-000035f2", "========= Context OUTBOUND-RESTRICTED-routes =========") in new stack
    -- Executing [+79211025252@from-internal:3] NoOp("PJSIP/739-000035f2", "== Destination: +79211025252 , CID: 739 ==") in new stack
    -- Executing [+79211025252@from-internal:4] NoOp("PJSIP/739-000035f2", "======================================================") in new stack
    -- Executing [+79211025252@from-internal:5] AGI("PJSIP/739-000035f2", "trunk_hook.php,+79211025252,739") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/trunk_hook.php
    -- AGI Script trunk_hook.php completed, returning 0
    -- Executing [+79211025252@from-internal:6] Set("PJSIP/739-000035f2", "var_trunk_outrt=outrt-10") in new stack
    -- Executing [+79211025252@from-internal:7] NoOp("PJSIP/739-000035f2", "========= outrt-10 =========") in new stack
    -- Executing [+79211025252@from-internal:8] GotoIf("PJSIP/739-000035f2", "0?pusto") in new stack
    -- Executing [+79211025252@from-internal:9] Goto("PJSIP/739-000035f2", "outrt-10,+79211025252,1") in new stack
    -- Goto (outrt-10,+79211025252,1)
    [2021-11-11 21:56:27] WARNING[23201][C-00001df3]: pbx.c:4467 __ast_pbx_run: Channel 'PJSIP/739-000035f2' sent to invalid extension but no invalid handler: context,exten,priority=outrt-10,+79211025252,1


    dialplan show
    dialplan show +79211025252@outbound-restricted-routes
    [ Context 'outbound-restricted-routes' created by 'pbx_config' ]
    '_[+0-9]!' => 1. Noop(======================================================) [pbx_config]
    2. Noop(========= Context OUTBOUND-RESTRICTED-routes =========) [pbx_config]
    3. Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==) [pbx_config]
    4. Noop(======================================================) [pbx_config]
    5. AGI(trunk_hook.php,${EXTEN},${CALLERID(number)}) [pbx_config]
    6. Set(var_trunk_outrt=${trunk_outrt}) [pbx_config]
    7. Noop(========= ${var_trunk_outrt} =========) [pbx_config]
    8. GotoIf($["${var_trunk_outrt}" = "pusto"]?pusto) [pbx_config]
    9. Goto(${var_trunk_outrt},${EXTEN},1) [pbx_config]
    [pusto] 10. Noop(== PUSTO QUIT CUSTOMIZATION ==) [pbx_config]
    11. Macro(user-callerid,LIMIT) [pbx_config]
    12. Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})}) [pbx_config]
    13. Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})}) [pbx_config]
    14. GotoIf($["${BLINDTRANSFER}" == ""]?notblind) [pbx_config]
    15. Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)}) [pbx_config]
    16. Set(ROUTEUSER=${CUT(ENDPOINT,/,2)}) [pbx_config]
    [notblind] 17. GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2) [pbx_config]

    -= 1 extension (17 priorities) in 1 context. =-


    Вернул это все к изночальному виду
    outbound-restricted-routes
    [outbound-restricted-routes]
    include => outbound-restricted-routes-custom

    ;--== INCLUDE ==--;
    exten => _[+0-9]!,1,Noop(======================================================)
    exten => _[+0-9]!,n,Noop(========= Context OUTBOUND-RESTRICTED-routes =========)
    exten => _[+0-9]!,n,Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==)
    exten => _[+0-9]!,n,Noop(======================================================)

    exten => _[+0-9]!,n,AGI(trunk_hook.php,${EXTEN},${CALLERID(number)})
    exten => _[+0-9]!,n,Set(var_trunk_outrt=${trunk_outrt})
    exten => _[+0-9]!,n,Noop(========= ${var_trunk_outrt} =========)

    exten => _[+0-9]!,n,GotoIf($["${var_trunk_outrt}" = "pusto"]?pusto)
    exten => _[+0-9]!,n,Goto(${var_trunk_outrt},${EXTEN},1)
    exten => _[+0-9]!,n(pusto),Noop(== PUSTO QUIT CUSTOMIZATION ==)
    ;--== INCLUDE ==--;

    exten => _[+0-9]!,n,Macro(user-callerid,LIMIT)
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})})
    exten => _[+0-9]!,n,GotoIf($["${BLINDTRANSFER}" == ""]?notblind)
    exten => _[+0-9]!,n,Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${CUT(ENDPOINT,/,2)})
    exten => _[+0-9]!,n(notblind),GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2)

    exten => h,1,Hangup

    ;--== end of [outbound-restricted-routes] ==--;
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Все очень очень странно,
    _[+0-9]! если так то ошибка к контексте ругается на
    exten => _[+0-9]!,n,Goto(${var_trunk_outrt},${EXTEN},1)
    иногда не всегда что ...

    Если делаю
    exten => _.,n,Goto(${var_trunk_outrt},${EXTEN},1)
    В маршруте 3-и номера, он звонит со всех трех по очереди если сбрасывают зонок...
    жесть какая то =\
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Да, вот целиком привожу замысел

    [outbound-restricted-routes]
    include => outbound-restricted-routes-custom
    ;--== INCLUDE ==--;
    exten => _[+0-9]!,1,Noop(======================================================)
    exten => _[+0-9]!,n,Noop(========= Context OUTBOUND-RESTRICTED-routes =========)
    exten => _[+0-9]!,n,Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==)
    exten => _[+0-9]!,n,Noop(======================================================)
    
    exten => _[+0-9]!,n,AGI(trunk_hook.php,${EXTEN},${CALLERID(number)})
    
    exten => _[+0-9]!,n,Set(var_trunk_outrt=${trunk_outrt})
    exten => _[+0-9]!,n,GotoIf($["${var_trunk_outrt}" = "pusto"]?pusto:gonext)
    exten => _[+0-9]!,n(gonext),Goto(${var_trunk_outrt},${EXTEN},1)
    exten => _[+0-9]!,n(pusto),Noop(== PUSTO QUIT CUSTOMIZATION ==)
    ;--== INCLUDE ==--;
    
    exten => _[+0-9]!,n,Macro(user-callerid,LIMIT)
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})})
    exten => _[+0-9]!,n,GotoIf($["${BLINDTRANSFER}" == ""]?notblind)
    exten => _[+0-9]!,n,Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${CUT(ENDPOINT,/,2)})
    exten => _[+0-9]!,n(notblind),GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2)
    
    exten => h,1,Hangup
    
    ;--== end of [outbound-restricted-routes] ==--;


    ${trunk_outrt} = тут из AGI он возвращает либо номер маршрута outrt-Х , либо pusto , следовательно если если outrt-Х известен то посылаем в
    exten => _[+0-9]!,n(gonext),Goto(${var_trunk_outrt},${EXTEN},1)

    Или если pusto то выходим из кастомизации и идем стандартным путем...