Как можно добавить префикс к расширению?

Здравствуйте. У меня есть сервер с Asterisk, с которым я пока что разбираюсь на базовом уровне. Ранее мы пользовались услугами SIP-провайдера Зебра Телеком, и исходящие международные вызовы осуществлялись через него без проблем, благодаря совпадению паттерна вызова с транком провайдера. Однако недавно нас принудительно перевели на площадку Ростелекома, и теперь для международных вызовов требуется добавление префикса "810". 

В связи с этим, у меня возник вопрос: как можно автоматически добавлять префикс "810" в эксеншен? В данный момент у меня реализовано следующее:

<pre><code>[CallingRule_Kazakhstan_77]
exten =&gt; _7[77]XXXXXXXXX,n,Dial(SIP/trunk_zebra/${EXTEN:0},60)
exten =&gt; _7[77]XXXXXXXXX,n,GotoIf($[${DIALSTATUS}=BUSY]?CallingRule_busy,_X!,1)
exten =&gt; _7[77]XXXXXXXXX,n,GotoIf($[${DIALSTATUS}=NOANSWER]?CallingRule_busy,_X!,1)
exten =&gt; _7[77]XXXXXXXXX,n,Hangup()
exten =&gt; h,1,Hangup()</code></pre>

Я нашел информацию для FreePBX, но не смог найти ничего полезного для чистого Asterisk. Может быть, я просто плохо искал?
  • 1 октября 2024 г. 7:33
Ответы на вопрос 2
Чтобы добавить префикс "810" к номеру в Asterisk, вы можете изменить ваш контекст так, чтобы при вызове подходящего шаблона номера префикс добавлялся автоматически. В вашем случае, вы можете просто модифицировать строку `Dial`, чтобы она подставляла префикс к номеру, а также убедиться, что префикс добавляется к переменной `${EXTEN}`.

Вот как можно изменить ваш контекст:

```asterisk
[CallingRule_Kazakhstan_77]
exten => _7[77]XXXXXXXXX,n,Set(NEW_EXTEN=810${EXTEN}) ; Добавляем префикс 810 к номеру
exten => _7[77]XXXXXXXXX,n,Dial(SIP/trunk_zebra/${NEW_EXTEN},60) ; Используем новый номер с префиксом
exten => _7[77]XXXXXXXXX,n,GotoIf($[${DIALSTATUS}=BUSY]?CallingRule_busy,_X!,1)
exten => _7[77]XXXXXXXXX,n,GotoIf($[${DIALSTATUS}=NOANSWER]?CallingRule_busy,_X!,1)
exten => _7[77]XXXXXXXXX,n,Hangup()
exten => h,1,Hangup()
```

### Что было изменено
1. **Создана новая переменная `NEW_EXTEN`**: В строке с `Set` добавляется префикс "810" к оригинальному номеру `${EXTEN}`.
2. **Использование новой переменной в `Dial`**: Теперь в `Dial` используется `${NEW_EXTEN}` вместо `${EXTEN}`, чтобы был вызван номер с префиксом "810".

### Дополнительно
1. Убедитесь, что изменения в конфигурации касаются вашего конкретного контекста, и перезагрузите конфигурацию Asterisk, чтобы изменения вступили в силу.
2. Проверьте логи Asterisk для отладки в случае, если что-то не будет работать ожидаемым образом.

Теперь, когда вы будете набирать номер, который соответствует шаблону `_7[77]XXXXXXXXX`, к номеру автоматически добавится префикс "810".
- exten => _7[77]XXXXXXXXX,n,Dial(SIP/trunk_zebra/${EXTEN:0},60)
+ exten => _7[77]XXXXXXXXX,n,Dial(SIP/trunk_zebra/810${EXTEN},60)
Похожие вопросы