Comments 12
Зачем ограничивать в свЯзи сотрудников, занимающихся обзвоном клиентов? Сэкономил сегодня на звонках — доставил проблему сотруднику — остался завтра без клиента — послезавтра без работы. Рубите сук, на котором сидите, экономисты блин…
Возможно, Вы правы. Но это не мое дело. Для меня, как it специалиста, задача стоит ограничить звонки. А увеличение выручки, поиск клиентов и другие подобные вопросы решает коммерческий отдел.
Плохая, на самом то деле, позиция «моя хата с краю, мне сказали — я сделал». Коммерческий отдел дорешается когда-нибудь до того, что вам, как it специалисту, могут поставить задачу «написать по собственному».
А вы считаете, если обычный айтишник будет советовать руководителям отделов продаж и маркетинга, как им строить планы продаж, его повысят в должности, а не попросят «написать по собственному», и идти со своими советами куда подальше?
Я, конечно, понимаю что это можно назвать, как сказал товарищ bigbrotherwatchingyou: «Рубите сук, на котором сидите», но не в моей компетенции тут принимать решения.
Я, конечно, понимаю что это можно назвать, как сказал товарищ bigbrotherwatchingyou: «Рубите сук, на котором сидите», но не в моей компетенции тут принимать решения.
Но ведь можно не лезть с советами, а, после получения такой задачи, вежливо спросить: «А не позволите ли полюбопытствовать, милое руководство, с чем связаны такие меры? Али времена в конторе сложные наступают? А не зааффектит ли это коим-то образом наш многострадальный it-департамент». На своём опыте знаю, что как только в компании начинается режим экономии (на чем бы то ни было), то нужно держать ушки на макушке.
Мой вам совет раз так обстоят дела, уходите с этой конторы, а то скоро на вашей зарплате начнут экономить, а сейчас программисты в цене + voip инженер счас начинает цениться
Наверное, можно было бы вынести всю логику во внешнее приложение AGI, которое бы вам в диалплан возвращало только значение можно звонить или нет, не надо было бы переписывать диалплан.
Использование и xml, и бд? Можно все хранить в БД?
Зачем выкладывать куски кода на хабр? Выложит их в репо на гитхаб — можно почитать, посмотреть, попробовать.
Использование и xml, и бд? Можно все хранить в БД?
Зачем выкладывать куски кода на хабр? Выложит их в репо на гитхаб — можно почитать, посмотреть, попробовать.
Полностью с Вами согласен. Через AGI реализация была был намного гибчи и проще. Но на данный момент я не на столько хорошо владею всей этой кухней. Есть в планах реализовать этот сервис на AGI.
Насчет БД и XML — мне просто хотелось потренироваться на Python'e работать с этими форматами, этот язык я только начинаю изучать. Какие хранилища данных использовать, и как их совмещать — личный выбор каждого. В какой-то ситуации это может быть оправдано, а в какой-то нет. Нюансов может быть очень много.
Код не на столько гибкий, чтобы можно было просто взять и попробовать на своей АТС. Эта статья просто пример, как можно реализовать подобную задачу. Как только это станет приближенным к «готовому решению», будет репа. Но опять же, в идеале я бы реализовал это на AGI.
Насчет БД и XML — мне просто хотелось потренироваться на Python'e работать с этими форматами, этот язык я только начинаю изучать. Какие хранилища данных использовать, и как их совмещать — личный выбор каждого. В какой-то ситуации это может быть оправдано, а в какой-то нет. Нюансов может быть очень много.
Код не на столько гибкий, чтобы можно было просто взять и попробовать на своей АТС. Эта статья просто пример, как можно реализовать подобную задачу. Как только это станет приближенным к «готовому решению», будет репа. Но опять же, в идеале я бы реализовал это на AGI.
Не очень хорошо перезаписывать кусок диалплана сгенерированный freepbx. Для этого в [macro-dialout-trunk], который отвечает за звонки через транки, сделан вызов макроса Macro(dialout-trunk-predial-hook,), в который вы и должны поместить свою логику. Там будут доступны переменные DIAL_TRUNK, DIAL_NUMBER, полный список можете получить вызвав DumpChan() в этом макросе и посмотреть в консоль при исходящем звонке.
Подробнее в extensions.conf
;-------------------------------------------------------------------------------
; macro-dialout-trunk-predial-hook:
;
; this macro intentionally left blank so it may be safely overwritten for any custom
; requirements that an installation may have.
;
; the macro is called by macro-dialout-trunk just prior to making a Dial() attempt
; to a trunk.
;
; MACRO RETURN CODE: ${PREDIAL_HOOK_RET}
; if set to "BYPASS" then this trunk will be skipped
;
;
[macro-dialout-trunk-predial-hook]
exten => s,1,MacroExit()
;-------------------------------------------------------------------------------
Благодарю за информацию! Попробую сделать через Macro.
Сделал именно таким образом, потому что:
а. имею минимальный опыт работы с конфигурационными файлами Asterisk'a;
b. FreePBX перезаписывает основные конфиги после применения настроек, и приходится «выносить» нужные мне блоки за его пределы.
Сделал именно таким образом, потому что:
а. имею минимальный опыт работы с конфигурационными файлами Asterisk'a;
b. FreePBX перезаписывает основные конфиги после применения настроек, и приходится «выносить» нужные мне блоки за его пределы.
FreePBX перезаписывает основные конфиги после применения настроек, и приходится «выносить» нужные мне блоки за его пределы.
Поэтому в конфигах FreePBX существует большое количество -custom контекстов, которые предназначены именно для этих целей. (Если у вас их нет, проверьте опцию FreePBX — Settings — Advanced Settings — «Disable -custom Context Includes».) Многие задачи можно решить с их помощью не прибегая к перезаписыванию сгенерированных конфигов. Еще часть можно решить с помощью Custom Destinations.
Sign up to leave a comment.
Индивидуальный дневной лимит на исходящие звонки (ограничение платных направлений)