516 просмотров
от (640 баллов) в категории Тонкая настройка
редактировать от

Всем привет

Прочитал вот эту статью и захотел переделать скрипт под MikoPbx, но с сожалению знаний не хватает, потому скрипт ниже не работает у меня.

Смысл общий такой, что если прошел звонок на определенного провайдера, то затем, после окончания вызова и при нажатии на "20" предыдущий определившийся номер попадает автоматически в blacklist (спам-лист). 

Подскажите пожалуйста, как можно этот код переделать, чтобы он работал и работал не только с одним провайдером, а со всеми?

[SIP-1634042845-incoming-custom]

exten => _X!,1,Set(_From=${CALLERID(name)}) 

    same => n,GotoIf(${BLACKLIST()}?banned)

    same => n,Set(DB(ToMe/LastCaller)=${From})

    same => n,Hangup()

    same => n(banned),Answer()

    same => n,Hangup()

    

[all_peers-custom]

exten => 20,1,Set(tmp=${DB(ToMe/LastCaller)})

    same => 20,n,Set(DB(blacklist/${tmp})=1)

    same => n,return

1 Ответ

от (2.8 тыс. баллов)

Можно попробовать в add-trim-prefix-clid-custom.

  • add-trim-prefix-clid-custom - этот контекст используется при обработке входящих вызовов, лучшим образом подходит для нормализации входящего номера телефона, добавить / отсечь префикс
от (2.8 тыс. баллов)
редактировать от
Тесты проводились на вресии 2021.3.86.

Очистите базу blacklist командой:

asterisk -rx «database deltree blacklist»

Можете очистить базу ToMe

asterisk -rx «database deltree ToMe»

Попробуйте снова.

20 нужно нажимать после завершения звонка.

выполните команду:

asterisk -rx 'database show' | grep blacklist

посмотрите что выдаст. Должно быть так:

/blacklist/1234567890                 :1234567890

Тогда все правильно. Если выдает просто:

/blacklist/                                      :

Тогда нужно смотреть ваше оборудование и разбираться уже как передается входящий номер. Возможно, нужно будет сменить на CALLERID(name), возможно, он передается более хитрым способом. Это уже за рамками форума.

Сначала _From c подчеркиванием. Дальше уже просто как переменная ${From}

Диалплан рабочий, тестировали на живой системе.

PS и надеюсь заголовки на свои заменили? (SIP-1634042845-incoming-custom????)
от (640 баллов)

Благодарю Вас, все получилось)

Возникла правда маленькая проблемка, при поступлении с одного провайдера номер определяется как 7-ХХХ-ХХХХХХ, а с другого как 8-ХХХ-ХХХХХХ, т.е. номер нужно добавлять 2 раза получается, если он будет звонить на два разных входящих номера?

Можно, как то обойти эту проблемку?

от (640 баллов)

И еще один вопрос, когда ставлю контекст add-trim-prefix-clid-custom  то все перестает работать, но все же хочется сделать одно правило для всех входящих линий. 

Какой контекст я могу еще использовать для этой цели?

от (2.8 тыс. баллов)

1. Это называется нормализация входящего номера. Описано здесь: https://wiki.mikopbx.com/faq:cid_norm

Читать внимательно и вдумчиво, до полного просветления :)

2. Да, для этого можно использовать add-trim-prefix-clid-custom, но [all_peers-custom] нужно оставить в файле existantions.conf

от (640 баллов)
редактировать от

Еще раз, огромное спасибо, все заработало. Привожу окончательный вариант работающего на 100% скрипта, с учетом всех Ваших инструкции и исправлений:

[add-trim-prefix-clid-custom]

exten => _.!,1,NoOp(---)

    same => n,Set(CALLERID(num)=${REPLACE(CALLERID(num),"+")})

    same => n,ExecIf($[ ${LEN(${CALLERID(num)})} == 11 ]?Set(CALLERID(num)=7${CALLERID(num):1}))

    same => n,ExecIf($[ ${LEN(${CALLERID(num)})} == 7 ]?Set(CALLERID(num)=7495${CALLERID(num)}))

    same => n,Set(_From=${CALLERID(num)})

    same => n,Set(tel_banned=${DB(blacklist/${From})})

    same => n,GotoIf($["${tel_banned}" = "${From}"]?banned:call)

    same => n(call),Set(DB(ToMe/LastCaller)=${From})

    same => n,return

    same => n(banned),Hangup()

[all_peers-custom]

exten => 66,1,Set(tmp=${DB(ToMe/LastCaller)})

    same => n,Set(DB(blacklist/${tmp})=${tmp})

    same => n,Wait(2)

    same => n,Playback(/storage/usbdisk1/mikopbx/media/custom/added_to_blacklist_male)

    same => n,Wait(1)

    same => n,Hangup

Немного украсил скрипт оповещением о добавлении номера в черный список. Скачать можно их в мужском исполнении и женском. Затем эти файлы добавляем в разделе "Звуковые файлы" и в скрипте меняем только название файла, либо  added_to_blacklist_male, либо added_to_blacklist_female, соответственно. 

Номер в черный список добавляется в этом варианте с помощью комбинации "66".

На этом сайте можно бесплатно задать вопрос разработчикам MikoPBX и другим членам сообщества. Время ответа не регламентированно, но мы стараемся несколько раз в день заглядывать сюда. Для срочного решения проблем обращайтесь на платную линию поддержки

Популярные теги

askozia входящие-вызовы настройка исходящие маршрутизация провайдер запись-разговоров входящие ivr исходящие-звонки обновление ошибка очередь провайдеры битрикс24 очередь-вызовов переадресация запись установка маршрут история-звонков mikopbx транк панель-телефонии-1с перевод-вызова перевод askozia7 askozia6 битрикс callerid интеграция голосовая-почта логи перехват-вызова ростелеком нерабочее-время факс модуль nat docker запись-разговора веб-интерфейс bitrix24 goip настройка-провайдер история диалплан почта журнал-звонков релиз gsm вызовы звонок внешние-номера web-интерфейс zabbix маршруты cdr sip панель pjsip переадресация-мобильный voicemail ascozia телефонная-книга аон мобильный звонков лицензирование вызовов редактор номер asterisk лицензия ami регистрация оповещения провайдеров время голосовая fax trunk разговоров группы-пользователей #mikopbx пропущенные-звонки донабор beeline monitoring тишина smtp cisco мобильные мультифон мегафон шлюз не-работает электронная-почта не-слышно-звук

2.8 тыс. вопросов

2.4 тыс. ответов

6.7 тыс. комментариев

465 тыс. пользователей

...