Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
providers:black_list [2020/04/05 14:53] 127.0.0.1 внешнее изменение |
providers:black_list [2022/07/13 14:27] (текущий) Портнов Алексей |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
[[faq:|Обратно к инструкциям]] | [[faq:|Обратно к инструкциям]] | ||
- | Периодически каждая компания сталкивается с проблемой поступления «спам» звонков. В связи с этим возникает потребность блокировки определенных номеров, чтобы звонки с этих номеров не поступали. В инструкции приведем пример, как для определенного провайдера (Zadarma) заблокировать все входящие звонки с номера 74952293042. | + | Периодически каждая компания сталкивается с проблемой поступления «спам» звонков. В связи с этим возникает потребность блокировки определенных номеров, чтобы звонки с этих номеров не поступали. |
- | 1. Перейдите в web-интерфейс MikoPBX в раздел **Маршрутизация** -> **Провайдеры телефонии**. Перейдите в учетную запись провайдера, для которого будем блокировать звонки через определенные номера. В нашем примере эта учетная запись провайдера Zadarma. \\ \\ | + | - Создайте новое "[[:dialplan-applications|Приложение диалплан]]" |
- | 2. В **Дополнительные параметры** добавьте следующие строки:\\ | + | - Укажите произвольное название, к примеру **Blacklist** |
- | <code> | + | - Выберите "**Тип кода**" - "**PHP AGI Скрипт**" |
- | context=miko-black-list | + | - Укажите короткий номер для приложения, к примеру 99 |
- | setvar=MIKO_PROVIDER_CONTEXT=SIP-PROVIDER-08625B6F7DE7550A2574AC2FEE5C3425-incoming | + | - На вкладке "**Программный код**" вставьте: <code><?php |
- | </code> | + | require_once('Globals.php'); |
- | * **miko-black-list** - мы переопределяем контекст для входящих звонков, все входящие звонки сначала будут попадать в этот контекст | + | use MikoPBX\Core\Asterisk\AGI; |
- | * **MIKO_PROVIDER_CONTEXT** - переменная, которая хранит наименование контекста входящих звонков для данного провайдера по умолчанию | + | use MikoPBX\Core\System\Processes; |
- | {{ :providers:2018-12-11_165629.png |}}\\ \\ | + | $agi = new AGI(); |
- | 3. Перейдите в раздел **Система** -> **Кастомизация системных файлов**, откройте для редактирования файл **extensions.conf**. \\ | + | $isTransfer = !empty($agi->get_variable('ISTRANSFER', true)); |
- | {{ :providers:2018-12-11_170112.png |}}\\ \\ | + | $number = substr($agi->request['agi_callerid'],-10); |
- | 4. Выберите режим **"Добавлять в конец файла"**, внизу в черное поле для редактирования вставьте следующие строки:\\ | + | |
- | <code> | + | $agi->verbose('new call from '.$agi->request['agi_callerid'], 1); |
- | [miko-black-list] | + | |
- | exten => _.!,1,ExecIf( $["${CALLERID(num)}" == "74952293042"]?Hangup()) | + | $filename = '/storage/usbdisk1/mikopbx/custom_modules/balcklist.txt'; |
- | same => n,Goto(${MIKO_PROVIDER_CONTEXT},${EXTEN},1) | + | $result = Processes::mwExec("/usr/sbin/grep '$number' < $filename"); |
- | </code> | + | if($isTransfer && $result !==0 ){ |
- | Определяем контекст **miko-black-list** для входящих звонков, где указываем, что все входящие звонки с номера **74952293042** мы завершаем **Hangup()**. Если в "чёрный" список необходимо добавить несколько номеров, то код будет выглядеть следующим образом:\\ | + | $agi->verbose('Add number to black list', 1); |
- | <code> | + | // Номер не найден в черном списке. |
- | [miko-black-list] | + | file_put_contents($filename, $number.PHP_EOL, FILE_APPEND); |
- | exten => _.!,1,ExecIf( $["${CALLERID(num)}" == "74952293042"]?Hangup()) | + | $agi->answer(); |
- | same => n,ExecIf( $["${CALLERID(num)}" == "74952293044"]?Hangup()) | + | $agi->hangup(); |
- | same => n,Goto(${MIKO_PROVIDER_CONTEXT},${EXTEN},1) | + | }elseif($result === 0){ |
- | </code> | + | // Номер найден. |
- | {{ :providers:2018-12-11_170322.png |}} | + | $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**" - это идентификатор приложения | ||
+ | - Сохраните изменения! | ||
+ | |||
+ | <note important>Черный список телефонов будет храниться в файле: \\ "**/storage/usbdisk1/mikopbx/custom_modules/balcklist.txt**" | ||
+ | \\ \\ Для добавления номера в черный список просто **выполните переадресацию на номер 99** (слепую, без консультации **99)</note> | ||
+ | |||
+ | |||
+ | [[faq:|Обратно к инструкциям]] | ||