Новые книги

Быстрота реакции – это то, что определяет успех продаж и переговоров. При разговоре (как телефонном, так и очном) зачастую нет и пары секунд, чтобы подумать и сформулировать взвешенный ответ. Главным оружием в такой ситуации является владение обширным арсеналом готовых ответов на любую реплику со стороны контрагента. Эта книга – кладезь самых успешных, продуманных и опробованных в жестких условиях реальных продаж речевых модулей, которые позволяют разрабатывать сценарии продаж, подходящие именно вашей переговорной ситуации. Если вместо избитых и совершенно неэффективных ответов на возражения клиента вы хотите получить реально работающие фразы, эта книга для вас!
Автор этой книги – Марк Джеффри, старший преподаватель Kellogg School of Management, ведущей бизнес-школы США в области маркетинга.

На страницах книги он подробно объясняет, как измерить эффективность маркетинга, используя для этого всего лишь 15 показателей. На примерах из практики международных компаний он последовательно и четко описывает принципы работы с данными.

Прочитав эту книгу, вы узнаете: как использовать ключевые показатели для повышения эффективности маркетинга, с какими сложностями при анализе данных могут столкнуться маркетологи, а также как реальные компании применяют на практике описываемые методики.

Using chat to Automate Dialing

Использование скрипта для автоматического дозвона

Одна из вещей, которые могут испугать Вас как неудобные в вышеизложенном примере то, что Вы должны установить связь вручную прежде, чем запустить pppd. В отличие от dip, pppd не имеет собственного языка скриптов для набора номера и регистрации, а полагается на внешнюю программу или shell-скрипт для того, чтобы сделать это. Команда, которая будет выполнена, может быть передана pppd опцией connect командной строки. pppd переназначит ввод и вывод к последовательной линии. Пакет pppd имеет очень простую программу chat для этих целей.

Хорошая альернатива для этого expect, написанная Don Libes. Она имеет очень мощный язык, основанный на Tcl, и была разработана для этого типа приложений. Именно ее стоит использовать в случае длинного и сложного процесса входа в систему.

Программа chat позволяет Вам определить скрипт в стиле UUCP. В основном скрипт состоит из последовательности чередующихся строк, которые ожидается получить от удаленной системы, и ответов, которые мы должны ей послать. Мы будем называть expect и send строки, соответственно для приема и передачи. Типичная часть chat-скрипта:

ogin: b1ff ssword: s3|<r1t

Он сообщает chat, что нужно ждать ответ удаленной системы с запросом имени пользователя (login prompt) и вернуть ей в ответ имя b1ff. Мы ждем только ogin: таким образом, не имеет значения с символа в верхнем или нижнем регистре начинается запрос, или он приходит искаженным. Следующяя строка заставит chat ждать запрос пароля и послать свой пароль в ответ.

Это, в основном, все то, для чего предназначены chat-скрипты. Полный скрипт для соединения с PPP-сервером должен включать соотствующие команды модема. Допустим, что модем понимает Hayes команды, и номер телефона сервера 318714. Полный вызов chat для установки связи с c3po:

$ chat -v '' ATZ OK ATDT318714 CONNECT '' ogin: ppp word: GaGariN

По определению, первая строка должна быть expect-строкой, но так как модем не будет сообщать что-нибудь прежде, чем мы запустим его, запустим chat так, чтобы он сначала ожидал пустую строку. Мы посылаем ATZ, команду reset для Hayes-совместимых модемов и ждем реакцию (OK). Следующая строка посылает команду dial с номером телефона для chat и ожидает сообщение CONNECT в ответ. За этим снова следует пустая строка, потому что мы не хотим ничего посылать, но надо подождать для быстрого входа в систему. Остальная часть chat-скрипта работает точно так же, как описано выше.

Опция -v сообщает chat о необходимости вести подробный протокол средствами демона syslog вызовом local2.

Определение chat-скрипта в командной строке несет оправданный риск, потому что пользователи могут просматривать командную строку любого процесса с использованием команды ps. Вы можете избежать этого, помещая chat-скрипт в файл, скажем dial-c3po. Вы можете заставить chat взять скрипт из файла вместо командной строки, передавая ему опцию -f, сопровождаемую именем файла. Наш скрипт dial-c3po будет выглядеть так:

''      ATZ
OK      ATDT318714
CONNECT ''
ogin:   ppp
word:   GaGariN
Слева написаны строки, которые мы ждем, справа наши ответы на них для передачи удаленной машине.

Вызов pppd будет таким:

# pppd connect "chat -f dial-c3po" /dev/ttyS3 38400 -detach \
        crtscts modem defaultroute

Помимо опции connect, которая определяет скрипт дозвона, мы добавили еще две опции в командной строке: -detach, которая сообщает pppd не отделяться от консоли и стать фоновым процессом. Ключевое слово modem заставит его выполнить некоторые действия, специфичные для модема, на последовательном устройстве, подобно "повесить трубку" после вызова. Если Вы не используете это ключевое слово, pppd не будет определять линию DCD и не обнаружит неожиданного обрыва связи.

Примеры, показанные выше были довольно просты; chat позволяет создавать намного более сложные скрипты. Одна очень полезная особенность, это способность к точному определению строки, на которой можно прервать chat с сообщением об ошибке. Типичные аварийные строки BUSY или NO CARRIER, которые модем обычно генерирует, когда вызываемый номер занят или не поднимает трубку. Для того, чтобы сделать так, чтобы chat их распознавал, Вы можете определить начало скрипта, используя ключевое слово ABORT:

$ chat -v ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ...

В подобном режиме Вы можете изменить значение блокировки по времени для частей скрипта, вставляя опции TIMEOUT.

Иногда нужно иметь возможность условного выполненич частей скрипта. Например, когда Вы не получаете запрос имени пользователя с удаленной машины, возможно, стоит послать BREAK или возврат каретки. Вы можете достичь этого, присоединяя sub-скрипт к expect-строке. Он состоит из последовательности send и expect строк точно таких же, как и обычный скрипт. Sub-скрипт отделяется тире и выполняется всякий раз, когда не было ничего получено в качестве ожидаемой строки. В примере, изложенном выше, мы модифицировали бы chat-скрипт следующим образом:

ogin:-BREAK-ogin: ppp ssword: GaGariN

Теперь, когда chat видит, что удаленная система не посылает запрос на вход в систему, sub-скрипт выполняется, сначала посылая BREAK, а затем снова ожидает запрос для входа в систему. Если теперь запрос появится, то основной скрипт будет продолжаться как обычно, иначе он прервется с сообщением об ошибке.