VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Получить фактический результат отправки сообщения

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Roman_dev
Сообщения: 29
Зарегистрирован: 18 янв 2013, 14:28

Получить фактический результат отправки сообщения

Сообщение Roman_dev »

Здравствуйте.
Хотел бы спросить, можно ли в диалплане Asterisk получить результат отправки текстового сообщения (отправляю функцией MessageSend). Получить его из переменной MESSAGE_SEND_STATUS не подойдет, так как не учитывается действительный код ответа. Переменная будет SUCCESS, даже если клиент ответил 4хх кодом, либо вообще не ответил (если отвалился).
Я вижу решение, через частый опрос клиента запросами options от asterisk, тогда Asterisk заранее буедт знать если клиент отвалился. Мне такое решение не очень нравится. Можно ли сконфигурировать диалплан так, чтобы можно было узнать если не код ответа, то хотя бы факт того, что ответов нет?

Буду благодарен за советы.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Получить фактический результат отправки сообщения

Сообщение ded »

Какую версию Астериска мучаете? Скорее всего ваш Астериск не поддерживает SIP MESSAGE (это можно увидеть в пакете INVITE)

User-Agent: PBX-1.99.0.28
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, PRACK, MESSAGE, NOTIFY, INFO - вот этого нет у вас.
Roman_dev
Сообщения: 29
Зарегистрирован: 18 янв 2013, 14:28

Re: Получить фактический результат отправки сообщения

Сообщение Roman_dev »

11 версия, сообщения пересылаются, снифал.
Кстати, а что за версия 1,9?
Мой Asterisk в поле Allow действительно не выводит метода MESSAGE, хотя обрабатывает их, пересылает на нужный номер.
Последний раз редактировалось Roman_dev 18 янв 2013, 17:19, всего редактировалось 1 раз.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Получить фактический результат отправки сообщения

Сообщение ded »

факт того, что ответов нет - это presense, разве нет?
Roman_dev
Сообщения: 29
Зарегистрирован: 18 янв 2013, 14:28

Re: Получить фактический результат отправки сообщения

Сообщение Roman_dev »

Не могли бы вы подсказать мне как это в диалплане проверяется, в какой переменной этот признак хранится, либо может быть есть какая-либо синхронная фукнция в Asterisk, которая ждет отклика?
Или presense это функция в Asterisk? То есть перед отправкой сообщения вызвать функцию, и проверить в онлайне ли пир?
Последний раз редактировалось Roman_dev 18 янв 2013, 17:30, всего редактировалось 1 раз.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Получить фактический результат отправки сообщения

Сообщение ded »

Я не знаю.
Я полагаю, что presense организован по разному, если локально - то через хинты и подписку на них - SUBSCRIBE и NOTIFY.
Вы не хотите почитать RFC? Протокол SIMPLE? Доки по Астериск? Посмотреть его код?
Roman_dev
Сообщения: 29
Зарегистрирован: 18 янв 2013, 14:28

Re: Получить фактический результат отправки сообщения

Сообщение Roman_dev »

Понял, что вы имели в виду под presense.
Тут вопрос в ином.
Я не хочу от Asterisk получать уведомление о присутствии (presense). Мне нужно обработать результат пересылки Asterisk-ом SIP сообщения. В идеале код ответа, то есть если клиент не ответил 200, я отправлю в обратку сообщение. Доки по Asterisk я по-возможности читаю, другое дело может быть кто-нибудь знает функцию, или механизм получения от Asterisk в через диалплан кода ответа на его запрос, или действительного реультат выполнения операции.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Получить фактический результат отправки сообщения

Сообщение ded »

Мы тестировали только сами посылки сообщений (чат) в реальном времени, без подтверждения кодами.
Обработка результатов пересылки Asterisk-ом SIP сообщений со всеми кодами - это есть в SIMPLE (AFAIK).
http://en.wikipedia.org/wiki/SIMPLE
SIP определяет два режима передачи мгновенных сообщений:

Страничный режим использует SIP-метод MESSAGE, как определено в RFC 3428. Этот способ не устанавливает сессий.

Режим Сессии. Протокол Message Session Relay (Реле Сессий Сообщений) (RFC 4975, RFC 4976) определяет текстовый протокол, используемый для обмена содержимым произвольного размера между пользователями в любое время. Сессия MSRP настраивается путем обмена определенной информацией, такой как MSRP URI, внутри SDP и SIP сигнализации.
Samael28
Сообщения: 1057
Зарегистрирован: 08 янв 2011, 18:32
Откуда: Киев
Контактная информация:

Re: Получить фактический результат отправки сообщения

Сообщение Samael28 »

Сразу оговорюсь, я не делал так, но предположу использовать ${HASH(SIP_CAUSE,<channel-name>)}. Во всяком случае ответ после Dial он получить позволяет.
Мой профайл на Upwork
Roman_dev
Сообщения: 29
Зарегистрирован: 18 янв 2013, 14:28

Re: Получить фактический результат отправки сообщения

Сообщение Roman_dev »

Большое спасибо за развернутый ответ.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH