Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
providers:black_list [2020/05/20 07:05] Портнов Алексей |
providers:black_list [2022/07/13 14:27] (текущий) Портнов Алексей |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
[[faq:|Обратно к инструкциям]] | [[faq:|Обратно к инструкциям]] | ||
- | Периодически каждая компания сталкивается с проблемой поступления «спам» звонков. В связи с этим возникает потребность блокировки определенных номеров, чтобы звонки с этих номеров не поступали. В инструкции приведем пример, как для определенного провайдера (Zadarma) заблокировать все входящие звонки с номера 74952293042. | + | Периодически каждая компания сталкивается с проблемой поступления «спам» звонков. В связи с этим возникает потребность блокировки определенных номеров, чтобы звонки с этих номеров не поступали. |
- | 1. Перейдите в web-интерфейс MikoPBX в раздел **Маршрутизация** -> **Провайдеры телефонии**. Перейдите в учетную запись провайдера, для которого будем блокировать звонки через определенные номера. В нашем примере эта учетная запись провайдера Zadarma. \\ \\ | + | - Создайте новое "[[:dialplan-applications|Приложение диалплан]]" |
- | 2. Скопируйте ID провайдера {{ :providers:2018-12-11_165629_png_i_zagruzki.png |}}\\ \\ | + | - Укажите произвольное название, к примеру **Blacklist** |
- | 3. Перейдите в раздел **Система** -> **Кастомизация системных файлов**, откройте для редактирования файл **extensions.conf**. \\ | + | - Выберите "**Тип кода**" - "**PHP AGI Скрипт**" |
- | {{ :providers:2018-12-11_170112.png |}}\\ \\ | + | - Укажите короткий номер для приложения, к примеру 99 |
- | 4. Выберите режим **"Добавлять в конец файла"**, внизу в черное поле для редактирования вставьте следующие строки:<code> | + | - На вкладке "**Программный код**" вставьте: <code><?php |
- | [PROVIDER-ID-incoming-custom] | + | require_once('Globals.php'); |
+ | use MikoPBX\Core\Asterisk\AGI; | ||
+ | use MikoPBX\Core\System\Processes; | ||
- | exten => _.!,1,ExecIf( $["${CALLERID(num)}" == "495793XXXX"]?Hangup()) | + | $agi = new AGI(); |
- | same => n,Return() | + | $isTransfer = !empty($agi->get_variable('ISTRANSFER', true)); |
- | </code>, где **PROVIDER-ID** - замените на идентификатор провайдера. | + | $number = substr($agi->request['agi_callerid'],-10); |
- | Если у вас несколько учетных записей одного провайдера подключено к Askozia, то имя контекста будет отличаться. К примеру IP 10.20.20.30 порт 5060, тогда имя контекста примет вид 102020305060. Строки хост и порт соединяются и остаются только буквы и цифры. Опишите дополнительно и этот контекст: | + | $agi->verbose('new call from '.$agi->request['agi_callerid'], 1); |
- | <code> | + | $filename = '/storage/usbdisk1/mikopbx/custom_modules/balcklist.txt'; |
- | [102020305060-incoming-custom] | + | $result = Processes::mwExec("/usr/sbin/grep '$number' < $filename"); |
+ | if($isTransfer && $result !==0 ){ | ||
+ | $agi->verbose('Add number to black list', 1); | ||
+ | // Номер не найден в черном списке. | ||
+ | file_put_contents($filename, $number.PHP_EOL, FILE_APPEND); | ||
+ | $agi->answer(); | ||
+ | $agi->hangup(); | ||
+ | }elseif($result === 0){ | ||
+ | // Номер найден. | ||
+ | $agi->verbose('The number was found in the blacklist. The call will be completed'); | ||
+ | $agi->hangup(); | ||
+ | }</code> | ||
+ | - Сохраните изменения и скопируйте идентификатор приложения из адресной строки браузера | ||
+ | - Перейдите в раздел **Система** -> **Кастомизация системных файлов**, откройте для редактирования файл **extensions.conf** {{ :providers:2018-12-11_170112.png |}} | ||
+ | - Выберите режим **"Добавлять в конец файла"**, внизу в черное поле для редактирования вставьте следующие строки:<code> | ||
+ | [internal-transfer](+) | ||
+ | exten => _99,1,Set(__ISTRANSFER=transfer_) | ||
+ | same => n,Goto(internal,${EXTEN},1) | ||
+ | |||
+ | |||
+ | [add-trim-prefix-clid-custom] | ||
+ | exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(start check blacklist) | ||
+ | same => n,AGI(DIALPLAN-APP-BE22D80F2A270C0020A1192B001A6653.php) | ||
+ | same => n,Return()</code>, где "**DIALPLAN-APP-BE22D80F2A270C0020A1192B001A665**" - это идентификатор приложения | ||
+ | - Сохраните изменения! | ||
- | exten => _.!,1,ExecIf( $["${CALLERID(num)}" == "495793XXXX"]?Hangup()) | + | <note important>Черный список телефонов будет храниться в файле: \\ "**/storage/usbdisk1/mikopbx/custom_modules/balcklist.txt**" |
- | same => n,Return() | + | \\ \\ Для добавления номера в черный список просто **выполните переадресацию на номер 99** (слепую, без консультации **99)</note> |
- | </code> | + | |
- | Сохраните изменения! | ||
[[faq:|Обратно к инструкциям]] | [[faq:|Обратно к инструкциям]] | ||