Программы для скриптов

Увеличиваем возможности C и Scheme

M. Тим Джонс
Опубликовано 21.05.2009

Guile появился в 1995 году в качестве интерпретатора для языка Scheme, упрощенного потомка языка Lisp, созданного Джоном МакКарти в 1958 году. Однако Guile делает Scheme встраиваемым, что позволяет использовать этот интерпретатор для встроенных скриптов. Guile – это не просто одно из расширений языка, это официальное расширение языка в рамках проекта GNU. Скрипты на Guile можно обнаружить во множестве приложений с открытым исходным кодом – от утилит gEDA CAD до Scheme Constraints Window Manager (Scwm), который обеспечивает гибкость настройки при помощи скриптов Scheme (ссылки приведены в разделе Ресурсы). У Guile очень успешная история использования в качестве встроенного языка скриптов таких приложений, как GNU Emacs, GIMP и Apache Web Server.

Ключевое свойство Guile — это расширяемость (см. рисунок 1). При помощи Guile вы можете обрабатывать скрипты Scheme, динамически связывать скрипты со скомпилированными приложениями на C и даже интегрировать скомпилированные функции C в скрипты Scheme. Это означает, что пользователи смогут перекраивать или изменять ваши приложения, добавляя в них свои параметры.

Содержание

Рисунок 1. Модель использования скриптов Guile

Кликните, чтобы увидеть увеличенное изображение

Одним из лучших примеров индивидуальной настройки приложений является индустрия видеоигр. Видеоигры предоставляют громадные возможности для индивидуальной настройки при помощи скриптов. Многие разработчики игр используют скрипты даже для создания основного кода, реализуя с их помощью отдельные аспекты (такие как системные параметры).

Простой пример

Теперь давайте взглянем на простой пример интеграции Guile в приложение на языке C. В данном случае я использую программу на языке C, которая вызывает скрипт Scheme. Исходный код первого примера приведен в листингах 1 и 2.

В листинге 1 показано приложение на языке C, которое вызывает скрипт Scheme. Для начала обратите внимание на включение файла заголовка libguile, которое делает доступными необходимые символы Guile. Затем обратите внимание на определение нового типа: SCM. Это абстрактный тип данных языка C, который представляет все объекты Scheme, содержащиеся внутри Guile. Здесь объявляется функция Scheme, вызываемая позже.

Первое, что нужно сделать для любого потока, использующего Guile, — это выполнить вызов scm_init_guile. Эта функция инициализирует глобальный статус Guile и должна быть выполнена раньше любой другой функции Scheme. Затем, до вызова функции Scheme, должен быть загружен файл, в котором находится эта функция. Сделайте это при помощи функции scm_c_primitive_load. Обратите внимание на название: _c_ в названии обозначает, что функция содержит переменную языка C (в отличие от переменной Scheme).

Далее выполняется поиск и возврат символьного имени переменной (модель функций Scheme) с помощью scm_c_lookup, затем оно разыменовывается при помощи scm_variable_ref и сохраняется в переменной Scheme func. Затем при помощи scm_call_0вызывается функция Scheme. Эта функция Guile вызывает ранее объявленную функцию Scheme без аргументов.

Листинг 1. Программа на языке C, вызывающая скрипт Scheme

#include <stdio.h> #include <libguile.h> int main( int argc, char **arg ) { SCM func; scm_init_guile(); scm_c_primitive_load( «script.scm» ); func = scm_variable_ref( scm_c_lookup( «simple-script» ) ); scm_call_0( func ); return 0; }

В листинге 2 приведен скрипт Scheme, вызываемый внутри приложения на языке C. Скрипт использует процедуру display для вывода на экран строки. После этой функции следует вызов процедуры newline, которая выполняет возврат каретки.

Листинг 2. Скрипт Scheme, вызываемый приложением на языке C (script.scm)

(define simple-script (lambda () (display «script called») (newline)))

Интересно то, что здесь скрипт связан с программой на языке C не статически, а динамически. Скрипт Scheme можно изменить, и тогда при выполнении ранее скомпилированной программы на языке C будут выполняться новые команды из скрипта. В этом заключается мощь встроенных скриптов: вы сочетаете скорость скомпилированных приложений и гибкость динамических скриптов.

Теперь, когда мы разобрались с простым примером, давайте копнем немного глубже, чтобы исследовать некоторые другие элементы использования скриптов Scheme в приложениях на языке C.

Краткое введение в Scheme

Поскольку многим Scheme может показаться непонятным, давайте рассмотрим несколько примеров, иллюстрирующих мощь этого языка. В этих примерах показаны переменные, условные операторы и циклы, а также некоторые основные особенности Scheme. Полное описание Scheme выходит за пределы данной статьи, но ссылки на необходимую информацию можно найти в разделе Ресурсы.

Для этих примеров я использовал интерпретатор Guile, который позволяет работать с Scheme в режиме реального времени, обеспечивает работу с кодом Scheme и отображает результат немедленно.

Переменные

Scheme является языком, использующим динамические типы данных, следовательно, тип переменной, как правило, неизвестен до момента исполнения. Переменные Scheme — это просто контейнеры, тип которых может быть задан позже.

Переменные создаются при помощи примитива define, а затем изменяются при помощи примитива set!. Здесь это сделано вот так:

guile> (define my-var 3) guile> (begin (display my-var) (newline)) guile> (set! my-var (* my-var my-var))

Процедуры

Способ создания процедур в Scheme также не будет неожиданным: при помощи примитива define. Процедуры могут быть анонимными (лямбда-процедуры) или именованными. Именованные процедуры хранятся в переменной, как показано ниже:

(define (square val) (* val val))

Эта форма отличается от традиционного синтаксиса Lisp, если вы с ним знакомы, но она проще для чтения. Теперь можно использовать эту новую процедуру так же, как и другие примитивы:

guile> (square 5) 25

Условные операторы

В Scheme существует много вариантов работы с условными операторами. Самый простой и распространенный — это условный оператор if. Он определяет проверку условия, истинное выражение и необязательное ложное выражение. В следующем примере вы можете видеть, как в Scheme делается обработка списков. Список начинается с if и заканчивается (display «less»). Вспомните, что Scheme является потомком Lisp и, соответственно, в его основе лежат списки. Scheme обрабатывает код и данные в виде списков, что размывает границы между данными и кодом.

guile> (define my-var 3) guile> (if (> my-var 20) (display «more») (display «less»)) less

Циклы

В Scheme циклы реализуются при помощи рекурсии, что требует определенной осмотрительности при использовании. Тем не менее это естественный способ итерирования. В следующем примере показан скрипт, который выполняет итерирование от 0 до 9, а затем выводит сообщение done (готово). В этом примере используется то, что в Scheme называется концевая рекурсия. Обратите внимание, что в конце цикла, который многократно вызывается с одной и той же функцией и аргументом, увеличивающимся с каждым повтором на единицу, выполняется итерация цикла. В традиционных языках программирования такая рекурсия обращается за пределы стека для обработки истории вызовов, но в Scheme это делается иначе. Последний вызов (tail) просто вызывает функцию без дополнительных вызовов или издержек на обслуживание стека.

(let countup ((i 0)) (if (= i 10) (begin (display «done») (newline)) (begin (display i) (newline) (countup (+ i 1)))))

Другой интересный способ использования циклов в Scheme — это процедура map. Эта команда просто применяет (или привязывает (maps)) процедуру к списку, как показано в следующем примере. Такой подход одновременно является простым и наглядным.

guile> (define my-list ‘(1 2 3 4 5)) guile> (define (square val) (* val val)) guile> (map square my-list) (1 4 9 16 25)

Использование скриптов Scheme в приложениях на языке C

Как вы видели в листинге 1, добавление скрипта Scheme в приложение на языке C не составляет особой проблемы. Теперь рассмотрим пример, в котором для переноса кода Scheme в C используются другие программные интерфейсы приложений (application programming interfaces, API). В большинстве приложений вам необходимо не только выполнять вызовы элементов Scheme, но и передавать аргументы функций Scheme, получать возвращенные значения и использовать переменные в обеих средах. Для этого в Guile содержится богатый набор средств.

Guile пытается преодолеть границу между двумя средами и придать языку C мощь Scheme. Этой цели служат динамические типы, продолжения, сборка мусора и другие концепции Scheme, расширяющие возможности языка C при помощи API-интерфейсов Guile.

Одним из примеров использования концепций Scheme в языке C является возможность динамического создания новых переменных Scheme из среды C. Для создания переменных Scheme используется функция C scm_c_define. Напоминаю, _c_ обозначает, что в качестве аргумента используется тип данных языка C. Если у вас уже есть переменная Scheme (полученная при помощи функции scm_c_lookup), вместо этого вы можете использовать scm_define. Наряду с созданием переменных Scheme в среде C вы можете разыменовывать переменные Scheme и конвертировать значения между двумя средами. Соответствующий пример приведен в листинге 3.

В листингах 3 и 4 приведены два примера взаимодействия между C и Scheme. В первом примере показан вызов функции Scheme из C, передача аргумента и перехват возвращенного значения. Во втором примере создается переменная Scheme для передачи аргументу. В листинге 4 представлены одинаковые функции Scheme, но первая из них использует аргумент, а вторая – статическую переменную.

В первом примере, в листинге 3, для вызова функции Scheme с единственным аргументом просто используется функция scm_call_1. Обратите внимание, что здесь вы должны передать Scheme значения функции. Функция scm_int2num используется для конвертирования целого числа C в числовой тип данных Scheme. Для обратного преобразования переменной Scheme ret_val в целое число C используйте scm_num2int.

Второй пример в листинге 3 начинается с создания новой переменной Scheme при помощи scm_c_define, определенной в строковой переменной C (sc_arg). Эта переменная назначается автоматически при помощи функции преобразования типов scm_int2num. Теперь, когда создана переменная Scheme, вы можете просто вызвать функцию Scheme square2 (на этот раз без аргументов) и использовать тот же метод для получения и разыменования возвращенного значения.

Листинг 3. Обращение к функциям и переменным Scheme при помощи C

#include <stdio.h> #include <libguile.h> int main( int argc, char *argv ) { SCM func; SCM ret_val; int sqr_result; scm_init_guile(); /* Вызов скрипта square с переданным аргументом */ scm_c_primitive_load( «script.scm» ); func = scm_variable_ref( scm_c_lookup( «square» ) ); ret_val = scm_call_1( func, scm_int2num(7) ); sqr_result = scm_num2int( ret_val, 0, NULL ); printf( «result of square is %d\n», sqr_result ); /* Вызов скрипта square2 с использованием переменной Scheme */ scm_c_define( «sc_arg», scm_int2num(9) ); func = scm_variable_ref( scm_c_lookup( «square2» ) ); ret_val = scm_call_0( func ); sqr_result = scm_num2int( ret_val, 0, NULL ); printf( «result of square2 is %d\n», sqr_result ); return 0; }

В листинге 4 показаны две процедуры Scheme, использующиеся приложением на языке C, приведенным в листинге 3. Первая процедура square – это обычная функция Scheme, которая получает один аргумент и возвращает результат. Вторая процедура — square2 — не получает аргументов, но зато обрабатывает переменную Scheme (sc_arg). Как и в предыдущем случае, эта переменная также возвращает результат.

Листинг 4. Скрипты Scheme, вызываемые в листинге 3 (script.scm)

(define square (lambda (x) (* x x))) (define square2 (lambda () (* sc_arg sc_arg)))

Использование функций C в скриптах Scheme

В последнем примере рассмотрим процесс вызова функций C из скриптов Scheme. Начнем с функции, вызываемой при помощи Scheme, в листинге 5. Для начала вы должны запомнить, что хотя это функция языка C, она получает и возвращает объекты Scheme (тип SCM). Начнем с создания переменной языка C, которая используется для получения аргумента SCM при помощи функции scm_num2int (конвертирует числовой тип данных Scheme в int языка С). Полученный аргумент возводится в квадрат и возвращает результат при помощи другого вызова в scm_from_int.

Оставшийся код программы в листинге 5 определяет параметры среды для загрузки в Scheme. После инициализации среды Guile при помощи вызова scm_c_define_gsubr в Scheme экспортируется функция языка C, которая принимает в качестве аргументов имя функции в Scheme, количество аргументов (обязательные, дополнительные, другие) и собственно экспортируемую функцию C. Остальное вы видели ранее. Загружается скрипт Scheme, получается ссылка на соответствующую функцию Scheme, и она вызывается без аргументов.

Listing 5. C program for setting up the environment for Scheme

#include <stdio.h> #include <libguile.h> SCM c_square( SCM arg) { int c_arg = scm_num2int( arg, 0, NULL ); return scm_from_int( c_arg * c_arg ); } int main( int argc, char *argv ) { SCM func; scm_init_guile(); scm_c_define_gsubr( «c_square», 1, 0, 0, c_square ); scm_c_primitive_load( «script.scm» ); func = scm_variable_ref( scm_c_lookup(«main-script») ); scm_call_0( func ); return 0; }

В листинге 6 содержится скрипт Scheme. Этот скрипт отображает ответ на вызов c_square, являющийся функцией, экспортированной в приложение на языке C из листинга 5.

Listing 6. Scheme script that calls the C function (script.scm)

(define main-script (lambda () (begin (display (c_square 8)) (newline))))

Как ни прост этот пример, он тем не менее демонстрирует легкость, с которой вы можете совместно использовать код и переменные в двух различных программных средах.

Эпилог

Время создания и распространения статических программ ушло. Сегодня пользователи ожидают от программ гибкости и удобной индивидуальной настройки. Хотя такая эволюция сопряжена с новыми сложностями, она в конечном счете позволяет пользователям раскрыть нам самим новые возможности наших приложений. Надеюсь, что эта статья поможет вам ощутить всю силу Guile. Scheme, возможно, один из самых старых используемых ныне языков программирования, но он остается одним из самых мощных. Guile делает его еще мощнее и удобнее.

Ресурсы для скачивания

  • Оригинал статьи (EN).
  • На домашней странице GNU-расширений языка (EN) можно найти последний выпуск Guile, ответы на вопросы и документацию (весьма подробное бесплатное Guile manual ; EN). Замечательной отправной точкой для начала работы с Guile является сайт GNU, содержащий набор ресурсов по Guile (EN).
  • Пакет GNU Electronic Design Automation (gEDU) и Scheme Constraints Window Manager (Scwm) — два проекта, использующих Guile для встроенных скриптов.
  • Скриптовый язык UnrealScript был разработан Epic Games для движка Unreal. Этот язык позволяет игровому сообществу создавать новое содержимое для игры.
  • Прочитайте о создании скриптов для игр на Python (EN) на сайте Gamasutra.
  • Посетите Scheme Wiki и ресурсы Scheme на сайте Guile, включающие в себя репозиторий кодов Scheme, стандарты языка Scheme и лекции. Хотя Scheme – старый язык, в процессе его изучения вы узнаете много полезного. Например, рекурсия, в большинстве языков одна из начальных тем, в Scheme обязательна.
  • На сайте Гленна Вандербурга (EN) хранятся сообщения UseNet, демонстрирующие, откуда берет начало Guile – из печально известной дискуссии UseNet «Tcl War». Флейм начался с сообщения Ричарда Столлмена под безобидным заголовком «Почему не следует использовать Tcl» и перерос в бурные дебаты длиною в месяц.
  • В разделе Linux сайта developerWorks можно найти дополнительные ресурсы для разработчиков Linux и самые популярные среди наших читателей статьи и руководства (EN).
  • Посмотрите все советы по Linux и руководства по Linux на сайте developerWorks.
  • Используйте в своем следующем проекте разработки для Linux ознакомительные версии программного обеспечения IBM, которые можно скачать непосредственно с developerWorks.

Скрипт продаж – прописанная в специальном регламенте последовательность действий, которая предписывает менеджеру, как общаться с клиентом в той или иной ситуации. Это письменный или визуальный сценарий (алгоритм) взаимодействия с новыми и постоянными покупателями. Скрипты продаж являются стандартами общения во многих коммерческих фирмах. Чтобы отдел продаж работал более эффективно, руководителю нужно прописать отдельные алгоритмы для каждого этапа взаимодействия с потенциальным клиентом. Какими программами для написания скриптов лучше всего воспользоваться, давайте разбираться вместе.

Доступные программы для создания простых сценариев

Если у вас небольшая компания, маленький отдел продаж и всего один сегмент целевой аудитории, вы можете самостоятельно написать сценарий в бесплатном конструкторе скриптов продаж:

  • текстовом редакторе Word. Последовательность действий (шагов) менеджеров будет представлена в виде таблицы с 2 колонками (речь менеджера и речь клиента) или нумерованного списка.

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

  • программе Excel. Созданные здесь скрипты более наглядны, чем вордовские сценарии, однако их проблематично редактировать. Добавление нового блока влечет обязательный сдвиг всей структуры, вам придется перестраивать расположение ранее добавленных блоков.

  • интеллектуальной карте Mind Map. Сгенерированный алгоритм представляет собой дерево связей, где вся информация наглядно структурирована. Недостаток: неудобный поиск блоков, долгое перелистывание между ветвями карты;
  • программе для создания сайтов, книг и скриптов Turbo Site. С помощью визуального редактора вы сможете создать простую схему действий менеджера, не разбираясь в программировании;
  • редакторе скриптов Sale Script. Помимо готовых сценариев программа позволяет создавать собственные алгоритмы взаимодействия, просматривать и редактировать их.

Прописанные сценарии представляют собой схемы из вопросов менеджера и предполагаемых ответов покупателя.Руководитель отдела продаж вправе настроить доступ к готовому скрипту. Для правильной работы алгоритма созданную схему следует закольцевать – прописать целевое действие, которым заканчивается взаимодействие с покупателем. В ходе создания скрипта в Sale Script вы сможете:

  1. Создавать связи между разными текстовыми блоками;
  2. Прописывать любое количество ответов к одному вопросу;
  3. Связывать вариант ответа всего лишь с одним вопросом (недостаток генератора скриптов).

В отличие от Word и Excel, вы получаете наглядные скрипты, которые автоматически выравниваются при редактировании. При добавлении новых блоков ячейки не накладываются друг на друга.

Создание многовариантного сценария в Sales Elevator

Компаниям, которые оказывают широкий спектр услуг либо продают товары разным группам клиентов, обычно требуется большое количество сценариев. Быстро и недорого их можно создать в Sales Elevator – платной программе для составления скриптов продаж и работы с ними.Стоимость пользования составляет всего 16 рублей за одного сотрудника в день. Сценарии разговора представляют собой интеллектуальные карты. После создания любую схему работы можно проиграть в тестовом режиме, нажав кнопку «Запустить сценарий». Если вы работаете в сфере B2B, пропишите задачи менеджера в отдельных скриптах (для общения с секретарем и лицом принимающим решение). Затем настройте автоматический переход между скриптами. При смене оппонента менеджеру моментально откроется новый сценарий разговора.

Возможности платной программы:

  1. Создание полей для комментариев покупателей прямо в схеме;
  2. Наличие встроенного поиска для нахождения нужных блоков разговора;
  3. Ручная фиксация возражений, которые не были предусмотрены сценарием;
  4. Автоматическая фиксация самых частых вопросов от клиентов;
  5. Добавление комментариев менеджеров.

Интеграция Sales Elevator с автоматизированной системой позволяет создавать новые контакты и сделки прямо из скриптов продаж. Все исходящие и входящие звонки фиксируются программой и попадают в статистику. Руководитель отдела продаж может просмотреть отчет по любому скрипту и оценить его эффективность.

Script ON – удобные сценарии продаж в формате html

Если вы подготовили скрипт телефонного разговора на бумаге или в Ворде, но хотите сделать его более наглядным и эффективным, занесите готовый сценарий в Script ON – готовый конструктор скриптов звонков с бесплатным 10-дневным периодом пользования. Платный тариф начинается от 990 рублей в месяц. Формируйте скрипты звонков совместно со всеми сотрудниками отдела продаж, программа не требует обучения, все схемы взаимодействия сохраняются автоматически.Преимущества платного генератора:

  • легко редактировать готовые сценарии;
  • нет ограничения по количеству скриптов;
  • вы можете заказать помощь профессионального скриптолога;
  • созданные алгоритмы доступны для копирования и скачивания;
  • программа совместна с любыми оперативными системами и мобильными устройствами.

Конструктор скриптов телефонных продаж Hyper Script

Если вы хотите не только создавать удобные скрипты, но и отслеживать их эффективность, попробуйте конструктор Hyper Script. Разработчик предлагает месяц бесплатного использования программы без ограничений по функционалу:

  1. Добавляйте новые ветки разговоров в любое время;
  2. Удаляйте ненужные блоки одним кликом;
  3. Настраивайте доступ пользователей к созданным алгоритмам взаимодействия (доступ прописывается через электронную почту менеджера);
  4. Анализируйте конверсию отдельных блоков и фраз.

Интегрировав программу с amoCRM, вы сможете ставить задачи менеджерам прямо из скрипта, отслеживать слабые места в рабочих сценариях и своевременно корректировать их.

Готовые шаблоны и индивидуальные сценарии в Script Designer

Script Designer – уникальная программа для работы со скриптами, позволяющая в течение 2 недель бесплатно генерировать наглядные алгоритмы, анализировать их эффективность и отслеживать следование менеджеров этим сценариям. Встроенная речевая аналитика фиксирует новые возражения, которые не были встроены в сценарий. Программа генерирует письменные отчеты по входящим и исходящим звонкам: начало и окончание беседы, результат, ответственного менеджера, а также записывает разговоры. Руководитель видит, сколько звонков было совершено по каждому скрипту, сколько из них были удачными, а сколько бесед не состоялось. Программа фиксирует, какие фразы менеджер успел произнести до поломки скрипта (возражения, которое сотрудник не смог закрыть). В связи с этим вы можете корректировать текст разговоров на том этапе, где произошла поломка сценария. При необходимости можно прослушать любой участок разговора отдела продаж с клиентом, особенно это актуально для разговоров, где произошел сбой. Результаты от использования платной программы:

  1. Глубокая маркетинговая проработка работы отдела продаж;
  2. Анализ нетипичных клиентских возражений;
  3. Контроль отклонения речи менеджера от прописанного регламента;
  4. Детальный анализ эффективности скриптов.

Платный тариф начинается от 500 рублей в месяц и позволяет использовать ПО одному сотруднику, максимальное количество пользователей – 10, стоимость месячного тарифа составит 2930 рублей.

Встройте готовые сценарии продаж в crm вместе с КоллХерпер

КоллХерпер – визуальный редактор, позволяющий составлять наглядные алгоритмы продаж в виде отдельных узлов. Узел представляет собой речь менеджера с несколькими вариантами ответа покупателя. Для поиска нужной фразы менеджеру не нужно пролистывать экран, все возможные варианты ответов высвечиваются на экране в виде иконок. Сотрудник кликает по иконку и открывается окно с информацией. Редактор скриптов позволяет:

  • добавлять списки контактов в программу;
  • настраивать поля под потребности бизнеса;
  • форматировать текст разговора;
  • прописывать статусы для контактов;
  • добавлять тематические иконки и цвета для узлов;
  • прописывать тэги.

Узлы с важной информацией можно добавить в меню быстрого доступа. Вы можете настроить автоматические переходы между различными блоками разговора. Достоинства платного конструктора: легко редактировать готовые алгоритмы, возможность назначения задач на сотрудников из скрипта, аналитика эффективности звонков. КоллХерпер интегрируется с amoCRM – теперь вы сможете создавать сценарии не выходя из автоматизированной системы или подгружать в базу уже готовые алгоритмы. Пользуясь КоллХерпер, вы сможете анализировать эффективность звонков и сценариев: их продолжительность и результат, число переходов по каждой ветви скрипта, комментарии лиц, ведущих диалог. Разработчик предлагает использовать редактор как отдельный конструктор либо как дополнительный блок автоматизированной системы. Стоимость месячного использования равна 665 рублям. За эту цену редактором смогут пользоваться не более 50 менеджеров.

Краткие выводы по статье

Составление рабочих сценариев сложный и трудозатратный процесс. Созданный однажды сценарий не может работать годами – на рынке могут появиться конкурентные товары и услуги, бюджет покупателей снизится, а ваше предложение изменится. Бесплатные программы для создания скриптов продаж – примитивные инструменты, которые подойдут на начальном этапе развития компании. С ростом числа клиентов/менеджеров, расширением сферы услуг и появлением новых сегментов покупателей, вам придется все чаще прописывать новые рабочие алгоритмы. И тут на помощь придут платные генераторы и конструкторы сценариев. Они более наглядны, требуют меньших временных затрат, без проблем интегрируются с crm системами и незаменимы в процессе аналитики эффективности маркетинговых инструментов.

Сборник примеров скриптов

Для того, чтобы вы могли составить себе представление о том, как работает программа, мы подготовили дюжину примеров, охватывающих все возможные сценарии применения. Вы можете использовать эти примеры как заготовки для создания ваших собственных скриптов. Вам остаётся лишь изменить имена файлов и пути к ним.

Установив Resorce Tuner Console на свой компьютер, вы найдёте папку Demo Scripts в директории с программой. Внутри этой папки находятся 12 папок с примерами скриптов и тестовыми файлами.

Иллюстрированное руководство по использованию скриптов

Все примеры скриптов готовы к применению. Чтобы запустить выполнение скрипта, выберете соответствующий .BAT файл в любой папке с примером. Resorce Tuner Console произведёт изменения в тестовом EXE файле, находящемся в папке «Src». Результирующий файл будет записан в папку «Release» в директории, содержащей скрипт.

Выберете в таблице название скрипта, чтобы увидеть код примера:

Название Описание примера
Edit Icons Этот скрипт показывает, как добавить или заменить указанные иконы в
тестовом приложении.
Edit Strings Этот скрипт показывает, как:
— Внести изменения в StringTable и в MessageTable, используя в качестве
источника строки из внешнего юникодного текстового файла.
Edit Manifest Этот скрипт показывает, как:
— Добавить или заменить манифест приложения.
Кроме того:
— Заменить иконы в EXE файле, используя в качестве источника ico файл;
— Добавить 256×256 икону, используя в качестве источника png файл;
— Отсортировать добавленные иконы в правильном порядке;
— Вывести отчёт об изменениях в дереве ресурсов в лог файл.
Edit Version Information Этот скрипт показывает, как обновить или добавить новые значения в
переменные и в строковые поля ресурса Version Information
одновременно во всех файлах в заданной директории.
Localize Version Information Этот скрипт показывает, как сделать так, чтобы приложение отображало
текстовые поля из Version Information на разных языках в зависимости от
региональных языковых настроек пользователя. Для этого скрипт:
— Обновляет существующую строковую Version Information;
— Создаёт копию Version Information для немецкого языка.
Кроме того:
— (Опционально) Устанавливает текущую дату в полях TimeDateStamp в
заголовке файла и в секциях экспорта и ресурсов.
Edit Custom GIF Этот скрипт показывает, как можно заменить любой тип данных, хранящихся
в виде кастомных ресурсов: основные графические форматы (.GIF, .PNG,
.JPG), звуковые (.WAV, .MIDI) и видео (.AVI) файлы, или бинарные файлы
(.CAB, TYPELIB, и т.п.):
— Добавить или заменить нестандарнтый ресурс (GIF), используя в качестве
источника gif файл.
Кроме того:
— Добавить или заменить Курсор, используя в качестве источника .cur файл.
— (Опционально) Устанавливает новое значение адреса ImageBase.
Edit Bitmap Этот скрипт показывает, как добавить или заменить Bitmap Image (.BMP) в
тестовом приложении.
Process Folder Этот скрипт показывает, как пакетно обработать файлы с заданными
расширениями (EXE, DLL, SYS, CPL) в указанной директории.
Big Test Script Этот скрипт показывает, как:
— Внести изменения в MessageTable, используя definition файл;
— Добавить новую String Table;
— Внести изменения в Version Information;
— Создать копию ресурса (MessageTable) с другим languageID;
— Вывести отчёт об изменениях в дереве ресурсов в лог файл;
— Сохранить все ресурсы из файла в виде ресурсной DLL.

Для просмотра изменений, произведённых в тестовых EXE файлах, мы рекомендуем использовать Resource Tuner GUI, визуальный редактор ресурсов.

Главная / Скрипт мастерз>

Описание

Мы разработали простую в использовании, но очень удобную платформу для формирования сценариев диалога для операторов, менеджеров и специалистов на основе web интерфейса. По адресу http://cwsl.contact-centr.ru:81 вы можете посмотреть как устроена наша платформа и посмотреть пример сценария диалога (логин admin пароль 123456).

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

Настройка фреймов ведется через удобный web интерфейс.

По каждому звонку и диалогу в статистику складывается информация о набранном номере, номере абонента, идентификаторе вызова, идентификатора оператора и дате-времени события. Все данные располагаются в базе данных, а по всем действиям, результатам отдельных фреймов можно сделать полноценные отчеты с выгрузкой данных, с диаграммами и пр на основе редактора отчетов «Infinity call-центр X».

Снимки экранов

Авторизация пользователей

Каждый фрейм разбит на две части – диалоговый и варианты ответов. Каждый вариант ответа может сопровождаться комментарием.

Комментарий может быть как обычным текстовым полем, так и выпадающим списком значений.

Поля ответов могут быть сгруппированы друг с другом, чтобы требовать обязательное заполнение нескольких полей одновременно при переходе на следующий фрейм. Например, такими полями могут быть ФИО, телефон для связи, опыт работы и желаемая вакансия.

Для перехода на следующий фрейм необходимо заполнить все поля, отмеченные звездочкой, как обязательные.

Список фремов можно редактировать. Это делается через web-форму. Никакой сложности, никакого программирования. Каждый фрейм имеет номер, заголовок, диалоговый текст-подсказку и варианты ответов.

Варианты ответов добавляются при редактировании фрейма. Варианты ответов имеют текст ответа, тип, признак обязательности комментария, метку переход на фрейм и признак комбинации ответов.

Редактирование варианта ответа происходит в удобном окошке.

На слайде показаны варианты ответов, которые сгруппированы в месте в один комбинированный ответ. переход по всем ним ведет на один и тот же фрейм.

Если поля комментариев представляют собой список, то этот список можно удобно редактировать.

Отчеты

Отчет можно формировать по любому переходу из фреймов в виде таблицы

Или в виде диаграммы

Отчет можно быть сформирован по выбору любого пункта из выпадающего списка комментария к переходу в виде таблицы

Или в виде диаграммы

Система позволяет формировать аналитические отчеты