Тот факт, что сервер разрывает соединение, может стать источником проблем для chat-сценария. Обычно разрыв коммутируемого канала приводит к безусловному завершению подключения. Для работы с саПЬаск-серверами существует команда HANGUP. Команда HANGUP OFF предотвращает завершение сценария регистрации в случае, если сервер разрывает соединение. Команда HANGUP OFF должна следовать непосредственно за командой, передающей серверу строкидентификатор. Когда сервер перезвонит и будет установлено соединение, воспользуйтесь командой HANGUP ON, чтобы вернуться к нормальной обработке разрыва подключения. По умолчанию (HANGUP ON) работа сценария прерывается, если произошел разрыв подключения.
В момент завершения работы chat-еценария устанавливается значение кода завершения. Код завершения - это числовое значение, обозначающее состояние сценария на момент завершения его работы. Ниже перечислены основные числовые коды и дана интерпретация каждого из них:
- 0 Сценарий завершился нормально.
- 1 Не удалось выполнить сценарий из-за некорректного параметра либо из-за переполнения буфера в процессе получения строки.
- 2 Работа сценария принудительно завершена из-за ошибки ввода/вывода либо по сигналу SIGINT/SIGTERM.
- 3 Работа программы завершена: истек интервал ожидания для строки.
- 4 и далее
Возникло условие, определенное командой ABORT. Числовое значение указывает, какое из условий выполнено. Первое условие, определенное командой ABORT, связано со значением 4; второе - со значением 5; третье - со значением 6 и т. д.
Коды завершения от 0 до 3 вполне прозрачны. Остальные значения легче понять на примере.
Ранее в этом разделе приводился пример сценария, содержавшего три команды ABORT: первая определяла поведение для события BUSY, вторая для события NO CARRIER, третья - для события RING - NO ANSWER. Если модем возвращает строку BUSY, сценарий завершает работу с кодом 4. Если модем возвращает строку RING - NO ANSWER, сценарий завершает работу с кодом 6. Значение кода завершения в каждом конкретном случае зависит от порядкового номера команды ABORT. Если бы другой пользователь переписал данный сценарий, расположив команду ABORT RING - NO ANSWER ранее всех прочих команд ABORT, завершение по событию RING - NO ANSWER приводило бы к получению кода 4, а не 6, как в нашем случае.
- << Назад
- Вперёд