T-mail

9.Обработка входящих вызовов

Реакция на вызов. Начало сеанса связи

Когда T-Mail не осуществляет вызов, не занят выполнением внешней программы, не находится в режиме терминала и не выполняет сценарий, то он находится в состоянии ожидания входящего вызова. T-Mail отвечает на входящий вызов только в случае, если в настоящий момент времени это разрешено переменной Answert-mail.ctl).

Распознавание звонка происходит по слову, заданному в переменной Ring (t-mail.ctl) (обычно "RING"). Кроме того, вы можете вручную дать команду ответа с помощью клавиш Alt-A, в этом случае T-Mail немедленно "поднимет трубку" и приступит к процедуре ответа.

Если вы хотите, чтобы T-Mail реагировал не на первый по счету звонок, используйте переменную Answer_Ring в t-mail.ctl. Она задает, после какого по счету звонка T-Mail будет "поднимать трубку" и подключать модем к линии. Во время подсчета звонков вы можете нажать клавишу пробела, и тогда T-Mail перейдет к ответу, не дожидаясь окончания подсчета звонков. Сбросить счетчик звонков можно, нажав 'ESC'. Если звонки прекратились и при этом их число не достигло заданного в Answer_Ring, то после паузы T-Mail перейдет снова в режим ожидания входного звонка. Максимальный размер этой паузы задается в переменной Max_Ring_Interval (t-mail.ctl).

Пример:

Answer0:00-9:00 ; В какое время отвечать.

Answer_Ring══ 5; Hа какой по счету звонок реагировать.

Действия после ответа на вызов

Ответив на вызов (т.е. послав в модем соответствующую управляющую строку), T-Mail начинает ожидать соединения. Время этого ожидания определяется переменной Wait_Carrier (t-mail.ctl). Оператор может увеличить или уменьшить это время клавишами '+' или '-', или прервать ожидание, нажав клавишу 'ESC'. Когда появляется сигнал несущей (carrier) и получена строка от модема, соответствующая одной из скоростей соединения или внешнему обработчику соединения (все строки задаются в файле t-mail.ctl), T-Mail переходит к фазе обработки соединения. В коммерческой версии можно также определить возможность адаптивного ответа, при котором входящий звонок факс-машины может вызвать соответствующие действия для приема факсимильного сообщения. Кроме того, T-Mail может работать в режиме автоответчика.

Если в ответе модема присутствовала строка, определенная в одной из переменных Extern (t-mail.ctl), то все дальнейшее управление передается внешнему обработчику соединения. Таким образом, например, по приходу строки CONNECT VOICE можно запустить какую-либо внешнюю программу (менеджер голосовых звонков), а по приходу строки CONNECT FAX - программу приема факсов, если это вам необходимо.

Если ни один внешний обработчик не запущен, то T-Mail:

  1. Если выход в BBS разрешен (BBS_Time в t-mail.ctl), то выдает в модем строку, описанную в переменной Force_BBS (t-mail.ctl), если нет - то строку, описанную в переменной Force_NoBBS (t-mail.ctl).
  2. Ждет поступления информации из линии.

Время этого ожидания задается в переменной Wait_Mailer (t-mail.ctl). Если в течение этого времени из линии не будет принято осмысленной информации, T-Mail выполняет действия, описанные в переменной Process Handshake_Timeout (t-mail.ctl). Если же информация будет принята, то возможны следующие варианты дальнейших действий T-Mail:

  1. управление передается внешнему обработчику ключевого слова (External Mailer), если из модема поступило ключевое слово, описанное в одной из переменных Extern_Mail (t-mail.ctl).
  2. если определено соединение по FTS-0001, то с помощью внешней программы, описанной в переменной Process FTS-1 (t-mail.ctl), производится прием почты по стандарту FTS-0001. T-Mail поддерживает только прием почты по этому стандарту;
  3. если принятыдва символа ESC подряд или получена посылка IEMSI, то:

1.        еслив этовремя разрешен══ выход вBBS (переменнаяBBS_Time в t-mail.ctl),то вмодемвыдаетсяфайл, описанныйв переменной BBS_Banner (t-mail.ctl), после чего управление передается программе BBS, как это определено в переменной Process BBS (t-mail.ctl);

2.        если выход вBBS запрещен, то в модемвыдается файл, описанный в переменнойNoBBS_Banner(t-mail.ctl),послечегосеанссвязи прерывается;

3.        и, наконец,если получена посылкаEMSI или YOOHOO,то выполняется процедураhandshaking (начальное"рукопожатие" систем,выполнение подстановок Setи AKA из subst.lst,проверка паролей), проверяется скорость соединения(она должна бытьбольше или равнауказанной в переменной Min_Baud_In (t-mail.ctl)), после чего T-Mail приступает к выполнениюсеанса связи- принимаети отправляетфайлы ипочту, обрабатывает файловые запросы и т.д.

Внешние обработчики соединения

Помимо стандартных сообщений от модема, говорящих о том, что произошло соединение, можно определить до 16 строк - ответов от модема, при получении которых будут выполняться определенные действия по обработке соединения. Эти строки описываются в файле t-mail.ctl таким образом:

Extern <modem string> | <action>

Например:

ExternCONNECT 2400| do2400.bat

ExternCONNECT VOICE | do_voice.bat

Ответ модема анализируются в первую очередь на соответствие строкам, указанным в переменных Extern.

Сеанс связи по FTS-0001

T-Mail имеет возможность только принимать почту по стандарту FTS-0001 при входящем вызове. Для этого в t-mail.ctl определяют значение переменной Process FTS-1: программу, которую t-mail будет запускать в качестве протокола X-modem при приеме файлов. Файлы, принимаемые при FTS-1 сессии, помещаются в каталог, описанный переменной InboundUnProtected в t-mail.ctl.

Внешние обработчики ключевого слова

В файле t-mail.ctl можно описать внешние программы, которые будут запускаться в случае приема соответствующей посылки или ключевого слова в то время, пока T-Mail ожидает начала handshake (после установления соединения). Вот как эти программы (External Mailers) определяются в файле t-mail.ctl:

Extern_Mail[[<addr list>]] <keyword> <action>

Например:

Extern_MailUUрcc:\uupc\uu.bat

Extern_MailGuest c:\bbs\dobbs.bat 1 2400

Extern_Mail[5030/124 5030/15.*]keysignpro.bat

Extern_Mail[.999]══════════════ login═══ uupc.bat Out Direct

При ответе на вызов, если будет предъявлено описанное как <keyword> слово (без пробелов), будет запущена программа или командный файл, соответствующий этому слову. Всего можно описать до 16 External mailers.

В <action> можно использовать макросы (см. главу 7, t-mail.ctl).

Пример:

Extern_MailUUрcc:\uupc\uu.bat *P *B *N

Для COM3 и 2400 bрs будет запущено c:\uupc\uu.bat 3 2400 1

Если вместо <keyword> задать слово 'Nothing', то внешняя программа в этом случае будет запущена, если не было принято ни одно ключевое слово, ни EMSI или YOOHOO handshake. Это возможно только для исходящих вызовов. Если в случае исходящего вызова и использовании параметра Nothing с удаленной системы будет принято слово 'Nothing', то соответствующая строке 'Extern_Mail Nothing' внешняя программа, как исключение, запущена не будет.

Если запуск внешнего мэйлера осуществляется при исходящем вызове, имеет значение код завершения (errorlevel), с которым заканчивает работу заданная программа. Если код завершения равен 0, то T-Mail уничтожает служебные письма, сформированные для системы, которая вызывалась (то есть письма от имени "T-Mail robot"). Это делается для того, чтобы избежать вечного опроса системы, которая заставляет T-Mail запустить внешний обработчик. Вы можете организовать работу с несовместимыми с FTN системами, придерживаясь схемы "фиктивных адресов".

Кроме того, при исходящих вызовах можно использовать <addr list> - список систем, при вызове которых активизируется Extern_Mail. Если система, которую T-Mail вызывает, не входит в <addr list>, то при установлении сеанса связи внешние мэйлеры не будут активизироваться в любом случае.

Пример для UUCP-системы:

(t-mail.ctl)

Extern_Mail══════════ ogin═══ uucico.exe -r1 -sall -f *L; for incoming

Extern_Mail [.999] Nothing uucico.exe -r1 -sall -f *L; for outgoing

(subst.lst)

.999time CM phone 123-4567

(events.ctl)

Poll.9995:00

Согласно этому примеру в 5 часов для адреса .999 сформируется Poll письмо как для обычной TN системы. Если при вызове этой системы будет получено слово login, то вызовется программа uucico, а после ее успешного завершения Poll письмо удалится и адрес .999 будет убран из очереди. При вызовах других систем внешний мэйлер uucico.exe по ключевому слову LOGIN активизироваться не будет.