# Провайдер для звонков Telegram

{% hint style="danger" %}
**Поддержка модуля приостановлена**, проблема в базовой библиотеке, пока она не будет решена, модуль не будет корректно работать. Рекомендуем использовть сервис <https://www.sip.tg/>
{% endhint %}

{% hint style="info" %}
**Обратите внимание**: Все данные авторизации / секретные коды / данные переписки Telegram используются исключительно ЛОКАЛЬНО на вашей АТС и НЕ передаются на сервера МИКО.
{% endhint %}

Модуль состоит из нескольких компонент:

* **Шлюз SIP ↔ Telegram** - позволяет **принимать звонки** от telegram и **совершать исходящие** звонки через telegram. Шлюз не зависит от прочих компонент, они лишь его дополняют
* **Телеграм клиент** - работает совместно с ботом, во время входящего звонка звонящему отправляется клавиатура для ввода добавочного номера.
* **Телеграм бот** - служит для формирования клавиатуры и отправки тональных команд в текущий канал. Для работы необходимо предварительно получить токен через интерфейс бота «**@BotFather**»

При звонке в компанию клиенту будет отправлена с сообщением **клавиатура для ввода добавочного номера**:

<figure><img src="/files/FmBGS9Hekd2KdGchICoo" alt=""><figcaption><p>Клавиатура для ввода добавочного номера</p></figcaption></figure>

После завершения звонка клавиатура будет скрыта.

После неудачного звонка из компании (клиент не ответил). Клиенту будет отправлена **визитка**:

<figure><img src="/files/eraTtdYLijKM4xAMSFxf" alt=""><figcaption><p>Визитка</p></figcaption></figure>

Текст визитки и клавиатуры ввода добавочного можно исправить в настройках **модуля**:

<mark style="color:red;">**Screenshot here!**</mark>

## Настройка Telegram <a href="#nastrojka_telegram" id="nastrojka_telegram"></a>

### Аккаунт <a href="#nastrojka_telegram" id="nastrojka_telegram"></a>

Необходимо настроить видимость номера телефона в разделе "**Конфиденциальность**" , а так же разрешить Всем звонить на номер телефона в разделе "**Звонки**":

<figure><img src="/files/qd73T8Zk8jedsgViQUmN" alt=""><figcaption><p>Настройки приватности номера телефона</p></figcaption></figure>

### Telegram Bot

**Создайте бота**

1. Откройте чат с **@BotFather** в любом удобном клиенте Телеграм

<figure><img src="/files/reXBjkn0vVKvp0aJ3prL" alt=""><figcaption><p>@BotFather</p></figcaption></figure>

2. Отправьте команду

```
/newbot
```

3. Введите «**name**» нового бота, к примеру **new\_keyboard\_bot**, имя должно быть коротким и понятным, **имя увидит клиент при получении клавиатуры**
4. Введите «**username**» для нового бота, к примеру **newest\_keyboard\_bot**

<figure><img src="/files/Yu2ghxi7eHRiNneGoiAF" alt=""><figcaption><p>@BotFather</p></figcaption></figure>

#### **Включите Inline Mode**

1. Отправьте боту команду

   ```
   /setinline
   ```
2. Выберите созданного ранее бота

<figure><img src="/files/lhWTefPxJQmjm893dVDs" alt=""><figcaption><p>Inline Mode in @BotFather</p></figcaption></figure>

#### **Получите Token**

1. Отправьте команду

   ```
   /mybots
   ```
2. Выберите созданного ранее бота
3. Кликните по кнопке «**API Token**»
4. Скопируйте значение «**token**»

#### **Начните диалог с ботом**

1. Отправьте из аккаунта телеграмм вашему боту команду

   ```
   /start
   ```
2. Напишите боту произвольное сообщение, к примеру «**Привет**!»

<figure><img src="/files/a3g0mSQk4iQlCxngKJBq" alt=""><figcaption><p>Hello world to your bot</p></figcaption></figure>

{% hint style="warning" %}
С ботом должен быть открытый диалог, если не отправить ему команду «**/start**», то часть функционала работать не будет.
{% endhint %}

## Получение "App api\_id" и "App api\_hash" <a href="#poluchenie_app_api_id_i_app_api_hash" id="poluchenie_app_api_id_i_app_api_hash"></a>

{% hint style="danger" %}
«**App api\_id**» и «**App api\_hash**» - это секретные параметры, которые привязываются к вашему *telegram* аккаунту. **Никому не сообщайте эти значения!** Они необходимы для подключения к API Telegram. Подробнее можно почитать в [документации](https://core.telegram.org/api/obtaining_api_id).
{% endhint %}

1. Перейдите по ссылке <https://my.telegram.org/auth>

<figure><img src="/files/wkMIbv908TZe1e8iEWb8" alt=""><figcaption><p>Telegram page</p></figcaption></figure>

2. Укажите номер телефона, привязанный к telegram аккаунту
3. Перейдите в раздел «**API development tools**»

<figure><img src="/files/KTlp9FBSdjNh2YDI83Yr" alt=""><figcaption><p>API development tools</p></figcaption></figure>

4. Опишите параметры нового приложения:

* «**App title**» - заголовок приложения
* «**Short name**» - уникальное короткое имя приложения
* «**URL**»- произвольный адрес сайта
* «**Platform**» - Other
* «**Description**» - произвольное описание

Выполните действие «**Create application**»

<figure><img src="/files/yHqlGKPFPevLoeX4m98N" alt=""><figcaption><p>AppParameters</p></figcaption></figure>

5. Скопируйте значения «**App api\_id**» и «**App api\_hash**»

<figure><img src="/files/HObk8KXN9Hrfw1DjksBm" alt=""><figcaption><p>«<strong>App api_id</strong>» и «<strong>App api_hash</strong>»</p></figcaption></figure>

## Настройки модуля MikoPBX <a href="#nastrojki_modulja_mikopbx" id="nastrojki_modulja_mikopbx"></a>

{% hint style="warning" %}
При восстановлении из бекапа может потребоваться повторная авторизация в telegram.
{% endhint %}

1. Установите дополнительный модуль «**Провайдер Telegram**», (см. инструкции по установке модулей в разделе [Управление модулями](broken://pages/meuGOnb4IGFsWJ0CdCrB))
2. Ведите значения «**App api\_id**» и «**App api\_hash**», полученные на предыдущем этапе, а так же **Token** бота, который вы получили при создании бота.

Сохраните изменения

<figure><img src="/files/7uikDkCZObwmsmpirJOJ" alt=""><figcaption></figcaption></figure>

3. Добавьте новый номер по кнопке «**Добавить**»
4. Запустите процесс авторизации для **Шлюза**, **Клиента Telegram**, для **Бота**

<figure><img src="/files/YULeiu6suJHI4VGLznuq" alt=""><figcaption></figcaption></figure>

5. Авторизуйте все линии. После подключения отобразится "**Линии подключены**". Подключенные каналы отобразятся зеленым цветом.

<figure><img src="/files/of93ObMPdZJRy25fzaJq" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Кнопки авторизации отображают статус подключения:

* **Красный** - Необходима авторизация
* **Оранжевый** - Ожидается запуск сервиса
* **Зеленый** - Соединение установлено

В любом из состояний возможно запустить процесс авторизации заново.
{% endhint %}

{% hint style="warning" %}
В случае возникновения проблем, может потребоваться очистить служебные каталоги ([с помощью SSH-клиента](/mikopbx/faq/troubleshooting/connecting-to-a-pbx-using-ssh/putty.md)):

* /storage/usbdisk1/mikopbx/custom\_modules/ModuleTelegramProvider/db/**7906660000**
* /storage/usbdisk1/mikopbx/custom\_modules/ModuleTelegramProvider/db/madeline/**7906660000**

где 7906660000 - номер телефона, логин телеграмм аккаунта
{% endhint %}

## Настройка провайдера <a href="#nastrojka_provajdera" id="nastrojka_provajdera"></a>

1. Скопируйте адрес и порт из активной линии. В нашем случае это **127.0.0.1:30001**
2. Перейдите в раздел "[Провайдеры телефонии](/mikopbx/manual/routing/providers.md)"

<figure><img src="/files/wycdvt4mqykIOZnm3w55" alt=""><figcaption><p>Раздел "Провайдеры телефонии"</p></figcaption></figure>

3. Добавьте нового провайдера

<figure><img src="/files/6Fx1mdaNAbFTJequFUMP" alt=""><figcaption><p>Новый провайдер</p></figcaption></figure>

4. Введите «**Название провайдера**» - произвольное значение.

Укажите «**Тип учетной записи**» - «**Аутентификация по IP адресу, без пароля**».

Введите «**Хост или IP адрес**» - **127.0.0.1**

«**Расширенные настройки**» - «**Порт соединения SIP**» - укажите порт линии, в текущем примере «**30001**»

<figure><img src="/files/FGQMobZupakq0TqLJepo" alt=""><figcaption><p>Настройки провайдера</p></figcaption></figure>

5. «**Расширенные настройки**» - «**Отключить использование поля fromuser**»

Сохраните изменения

<figure><img src="/files/nyw8BH1IbiQNcp9NJ73I" alt=""><figcaption></figcaption></figure>

6. В разделе «**Система**» -> «**Общие настройки**» разрешите использование кодека **Opus**

<figure><img src="/files/tt6qEADSBaU5flFosOl5" alt=""><figcaption><p>"Opus"</p></figcaption></figure>

### Входящий маршрут <a href="#vxodjaschij_marshrut" id="vxodjaschij_marshrut"></a>

Для настройки входящих маршрутов ознакомьтесь с документацией «[Входящие маршруты](/mikopbx/manual/routing/incoming-routing.md)»

{% hint style="warning" %}
**Порядок определения callerid**:\
Telegram может передавать следующие идентификаторы:

1. **X-TG-Phone** - номер телефона
2. **X-TG-Username** - ник пользователя
3. **X-TG-ID** - идентификатор пользователя

Некоторые идентификаторы могут быть скрыты клиентом в настройках приватности. Caller ID будет установлен исходя из этих полей, **X-TG-Phone** - имеет наивысший приоритет, **X-TG-ID** - низший.
{% endhint %}

### Исходящий маршрут <a href="#isxodjaschij_marshrut" id="isxodjaschij_marshrut"></a>

Для настройки входящих маршрутов ознакомьтесь с документацией «***Исходящие маршруты***»

{% hint style="success" %}
**Обязательно добавить плюс при наборе номера**! См. пример ниже.
{% endhint %}

Пример маршрута:

* «**Название правила**» - siptg
* «**Номер начинается с**» - 7
* «**Остальная часть номера состоит из указанного количества цифр**» - 10
* «**Перед тем как начать звонок отсекаем**» - 0
* «**цифр в начале номера, затем добавляем в начало** » - символ плюс »+«

<figure><img src="/files/G5rYs8df35bEzlRXPDPZ" alt=""><figcaption><p>Исходящие вызовы</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mikopbx.com/mikopbx/modules/miko/module-telegram-provider.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
