SIP-шлюзы
SIP-шлюзы — это устройства, работающие по протоколу SIP.
SIP-серверы могут быть аппаратными (отдельная железка), программными (один из распространенных — Asterisk) или предоставляться в виде сервиса.
Если вы решили использовать в sip-шлюз в качестве устройства обзвона, и не обладаете специальными знаниями в этой сфере, в первую очередь, выясните, возможно, ваш провайдер предоставляющий услуги Интернет, предоставляет вам и возможность доступа к SIP-шлюзу. Если такой возможности нет, вы можете использовать один общедоступных sip-серверов:
Настройки Call Office для отправки сообщений через PromoSMS. Возможности: Исходящие SMS.
Настройки Call Office для звонка через Sipnet. Возможности: Входящие звонки, Исходящие звонки.
Возможности: Входящие звонки, Исходящие звонки.
Возможности: Входящие звонки, Исходящие звонки. |
Одним из достоинств использования SIP-шлюза является возможность аппаратного определения факта поднятия трубки на другом конце телефонной линии. Это касается только правильно подключенных и настроенных SIP-серверов. Как правило все общедоступные сервера, обладают такой возможностью. Если же вы используете собственный аппаратный или программный SIP-шлюз, качество определения факта поднятия трубки зависит от подключения шлюза и его настройки.
Если вы пишете свой скрипт с использованием нашего COM-объекта, номер для большинства SIP-шлюзов следует набирать в формате:
<номер телефона>@<адрес SIP-шлюза>
Дополнительные параметры настройки SIP
Call Office позволяет указывать дополнительные параметры протокола SIP. Параметры указываются в 32-битной версии реестра в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Wentor\Call Office\SIP (если раздел не существует, его нужно просто создать). В этом разделе можно указывать следующие параметры:
- BindToAddress (строка) - указать ip-адрес интерфейса через который нужно отправлять запросы к SIP-шлюзу. Эта возможность необходима, если на вашем компьютере несколько ip-адресов и запросы к SIP-шлюзу нужно отправлять через указанный адрес.
- StunServer (строка) - позволяет задать имя STUN-сервера. STUN-сервера используются для автоматического определения топологии сети. Это позволяет автоматически определить маршрут до SIP-шлюза через сетевые устройства различного вида (NAT, шлюзы, маршрутизаторы). Этот параметр следует указывать, если программа не получает ответа от SIP-сервера. В качестве значения можно указать общедоступный STUN-сервер: stun.ekiga.net.
- UserId (строка) - позволяет задать имя пользователя User ID, в случае, если он отличается от Auth ID. Перекрывается параметром LineURL.
- CallerId (строка) - позволяет указать имя/номер телефона (Display Name) для исходящих звонков. Перекрывается параметром LineURL и функцией SetCallerId.
- LineURL (строка) - позволяет задать идентификационную информацию клиента в стандартном виде: "<CallerId>" <sip:<user>@<ip>;transport=UDP>. Перекрывает параметр UserId и CallerId.
- Proxy (строка) - позволяет указать адрес прокси-сервера.
- TCPPort (DWORD) - позволяет указать номер порта TCP.
- UDPPort (DWORD) - позволяет указать номер порта UDP.
- EnableDNS (DWORD) - использование DNS (0 - запрещено, 1 - разрешено (по умолчанию)).
- UseRport (DWORD) - позволяет указать использование rport (0 - запрещено, 1 - разрешено).
- KeepAliveTime (DWORD) - ненулевое значение включает отправку запросов поддержки соединения. Время между посылками запросов указывается в секундах (по умолчанию отправка запросов выключена). Тип запросов определяется параметром KeepAliveType, если не указан используется тип 2.
- KeepAliveType (DWORD) - тип отправки запросов поддержки соединения:
- 0 - отправка символов CR/LF;
- 1 - отправка запроса STUN;
- 2 - отправка запроса PING протокола SIP;
- 3 - отправка запроса OPTIONS протокола SIP;
- WaitForAnswer (DWORD) - позволяет включить программное распознавание голосового ответа абонента (0 - выключено, 1 - включено). Некоторые SIP-шлюзы сигнализируют о том, что абонент снял трубку сразу после набора номера. Как правило, это связано с особенностями настройки шлюза или его подключения к телефонной сети. В этом случае программа всегда будет определять, что трубка снята, сразу после набора номера, не дожидаясь реального ответа абонента. Лучшим способом решить эту проблему является правильное подключение или настройка шлюза, но в некоторых случаях это невозможно. Именно для таких случаев и предназначен этот параметр. При ненулевом значении, после набора номера программа будет определять ответ абонента программным способом.
- AudioCodec (строка) - позволяет задать аудио кодеки и порядок их использования. Кодеки задаются в виде строки разделенной запятыми, например: pcma,pcmu,speex,gsm.
Помимо указания параметров в реестре их можно указать в строке открытия устройства в виде:
<имя параметра>=<значение>; например: SIP\SIP;BindToAddress=192.168.0.1;
SIP ответы и их значения
1xx (информационные ответы)
SIP/2.0 100 Trying - запрос обрабатывается
SIP/2.0 180 Ringing - местоположение вызываемого пользователя определено. Выдан сигнал о входящем вызове
SIP/2.0 181 Call is Being Forwarded - прокси,сервер переадресует вызов к другому пользователю
SIP/2.0 182 Call is Queued - вызываемый абонент временно не доступен, вызов поставлен в очередь
SIP/2.0 183 Session Progress - используется для того, чтобы заранее получить описание сеанса информационного обмена от шлюзов на пути к вызываемому пользователю
2xx (ответы о завершении запроса)
SIP/2.0 200 OK - успешное завершение
SIP/2.0 202 Accepted - запрос принят для обработки Используется для справки о состоянии обработки
3xx (сообщения о переадресации)
SIP/2.0 300 Multiple Choices - указывает несколько SIP-адресов, по которым можно найти вызываемого пользователя
SIP/2.0 301 Moved Permanently - вызываемый пользователь больше не находится по адресу, указанному в запросе
SIP/2.0 302 Moved Temporarily - пользователь временно сменил местоположение
SIP/2.0 305 Use Proxy - вызываемый пользователь не доступен непосредственно, входящий вызов должен пройти через прокси-сервер
SIP/2.0 380 Alternative Service - запрошенная услуга недоступна, но доступны альтернативные услуги
4xx (невозможность обработать запрос)
SIP/2.0 400 Bad Request - запрос не понят из-за синтаксических ошибок в нем, ошибка в сигнализации, скорее всего что-то с настройками оборудования
SIP/2.0 401 Unauthorized - нормальный ответ сервера о том, что пользователь еще не авторизировался; обычно после этого абонентское оборудование отправляет на сервер новый запрос, содержащий логин и пароль
SIP/2.0 401 Expired Authorization - время регистрации истекло
SIP/2.0 402 Payment Required - требуется оплата (зарезервирован для использования в будущем)
SIP/2.0 403 No Such User - нет такого пользователя, ошибка в номере, логине или пароле
SIP/2.0 403 User Disabled - пользователь отключен
SIP/2.0 403 Wrong Guess - ошибка в пароле
SIP/2.0 403 Conflict - такой SIP-номер уже используется
SIP/2.0 403 Forbidden - абонент не зарегистрирован
SIP/2.0 403 Empty Route Set - нет ни одного шлюза в роутинге
SIP/2.0 403 Caller Not Registered - нет такого пользователя
SIP/2.0 403 Out of Look-Ahead Retries - перебор узлов закончен
SIP/2.0 403 Invalid Phone Number - нет такого направления
SIP/2.0 403 No Money Left on RFC Account - на счету нет денег для совершения звонка
SIP/2.0 404 Not found - вызываемый абонент не найден, нет такого SIP-номера
SIP/2.0 404 Undefined Reason - неопределенное направление
SIP/2.0 404 Unknown user account - логин и пароль не найдены
SIP/2.0 404 Out of Order - в заявке на маршрутизацию по этому направлению нет ни одного шлюза, проверьте настройку маршрутизации по этому направлению.
SIP/2.0 405 Method Not Allowed - метод не поддерживается, может возникать если пользователь пытается отправлять голосовую почту и т.п.
SIP/2.0 406 No codecs match - неправильная конфигурация кодеков
SIP/2.0 406 Not Acceptable - пользователь недоступен
SIP/2.0 407 Proxy Authentication Required - необходима аутентификация на прокси-сервере
SIP/2.0 408 Request Timeout - время обработки запроса истекло: Абонента не удалось найти за отведенное время
SIP/2.0 408 Login timed out - за отведенное время не получен ответ от сервера на запрос авторизации
SIP/2.0 410 No Route - вариант SIP/2.0 403 Empty Route Set; нет доступа к ресурсу: Ресурс по указанному адресу больше не существует
SIP/2.0 413 Request Entity Too Large - размер запроса слишком велик для обработки на сервере
SIP/2.0 415 No Media - звонок совершается неподдерживаемым кодеком
SIP/2.0 416 Unsupported Scheme - сервер не может обработать запрос из-за того, что схема адреса получателя ему непонятна
SIP/2.0 420 Bad extension - неизвестное расширение: Сервер не понял расширение протокола SIP
SIP/2.0 421 Extension Required - в заголовке запроса не указано, какое расширение сервер должен применить для его обработки
SIP/2.0 423 Interval Too Brief - сервер отклоняет запрос, так как время действия ресурса короткое
SIP/2.0 480 Invalid Phone Number - неправильный номер телефона, не соответствует к-во цифр или неправильный код страны или города
SIP/2.0 480 Destination Not Found In Client Plan - направления нет в тарифном плане абонента
SIP/2.0 480 Wrong DB Response - проблемы с центральной базой сети
SIP/2.0 480 DB Timeout - проблемы с центральной базой сети
SIP/2.0 480 Database Error - проблемы с центральной базой сети
SIP/2.0 480 Codec Mismatch - несоответствие кодеков
SIP/2.0 480 No Money Left on RFC Account - нет денег на счету, обратитесь к администратору сети!!!
SIP/2.0 480 Empty Route Set - пустое направление, нет принемающих шлюзов
SIP/2.0 480 No money left - недостаточно денег на счете
SIP/2.0 480 Temporarily Unavailable - временно недоступное направление попробуйте позвонить позже
SIP/2.0 481 Call Leg/Transaction Does Not Exist - действие не выполнено, нормальный ответ при поступлении дублирующего пакета
SIP/2.0 482 Loop Detected - обнаружен замкнутый маршрут передачи запроса
SIP/2.0 483 Too Many Hops - запрос на своем пути прошел через большее число прокси-серверов, чем разрешено
SIP/2.0 484 Address Incomplete - принят запрос с неполным адресом
SIP/2.0 485 Ambiguous - адрес вызываемого пользователя не однозначен
SIP/2.0 486 Busy Here - абонент занят
SIP/2.0 487 Request Terminated - запрос отменен, обычно приходит при отмене вызова
SIP/2.0 488 Codec Mismatch - нет шлюзов с поддержкой заказанного кодека
SIP/2.0 488 Private IP Address - адрес RTP media из сетей RFC1918
SIP/2.0 491 Request Pending - запрос поступил в то время, когда сервер еще не закончил обработку другого запроса, относящегося к тому же диалогу
SIP/2.0 493 Undeciperable - сервер не в состоянии подобрать ключ дешифрования: невозможно декодировать тело S/MIME сообщения
SIP/2.0 499 Codec Mismatch - отсутствует кодек
5xx (ошибки сервера)
SIP/2.0 500 Internal Server Error - внутренняя ошибка сервера
SIP/2.0 500 DB Timeout - нет ответа от базы данных
SIP/2.0 500 Database Error - то же самое, но в другой момент
SIP/2.0 500 Wrong DB Response - неправильный ответ базы данных, редкая ошибка
SIP/2.0 500 Undefined Reason - неопределенная причина
SIP/2.0 500 account has been moved to a remote system - аккаунт перенесен в удаленную систему (дословно)
SIP/2.0 501 Method Not Supported Here - в сервере не реализованы какие-либо функции, необходимые для обслуживания запроса: Метод запроса SIP не поддерживается
SIP/2.0 502 Bad Gateway - сервер, функционирующий в качестве шлюза или прокси-сервера, принимает некорректный ответ от сервера, к которому он направил запрос
SIP/2.0 503 Service Unavailable - сервер не может в данный момент обслужить вызов вследствие перегрузки или проведения технического обслуживания
SIP/2.0 504 Server time-out - сервер не получил ответа в течение установленного промежутка времени от сервера, к которому он обратился для завершения вызова
SIP/2.0 505 SIP Version not supported - версия не поддерживается: Сервер не поддерживает эту версию протокола SIP
SIP/2.0 513 Message too big - сервер не в состоянии обработать запрос из-за большой длины сообщения
6xx (глобальная ошибка)
SIP/2.0 600 Busy everywhere - вызываемый пользователь занят и не желает принимать вызов в данный момент
SIP/2.0 603 Decline - вызываемый пользователь не желает принимать входящие вызовы, не указывая причину отказа
SIP/2.0 604 Does Not Exist Anywhere - вызываемого пользователя не существует
SIP/2.0 606 Not Acceptable - соединение с сервером было установлено, но отдельные параметры, такие как тип запрашиваемой информации, полоса пропускания, вид адресации не доступны
(оригинал находится в базе знаний Sipnet)