Первая версия была написана для решения проблем, возникших после замены mod_spidermokey на mod_v8 в Freeswitch.
Это сломало множество скриптов, которые его использовали, и заставило искать решение...
QuickJS оказался наиболее подходящим вариантом (довольно быстрый, компактный и экономящий память).
Это проект с открытым исходным кодом, доступный на GitHUB
Позволяет использовать разделяемые библиотеки в скриптах.
Для длительных операций в консоли фоновое выполнение весьма полезно.
Предоставляет команды управления для CLI (list, break и т. д.).
Это наиболее интересный класс, позволяющий выполнять различные манипуляции с сессиями.
Позволяет работать с кодеками (кодирование/декодирование и т. д.).
Предоставляет методы для организации чатов с использованием Freeswitch Chat API.
Позволяет скриптам взаимодействовать с пользователями в живую, например, через WebRTC/SIP.
Предоставляет методы для работы с Freeswitch CoreDB.
Предоставляет методы для работы с различными базами данных через Freeswitch DBH API.
Позволяет взаимодействовать с внешним миром через HTTP.
Выполнение GET/POST запросов, загрузка файлов итд.
JsonRPC-клиент позволяет вызывать веб-сервисы из скриптов.
Позволяет создавать клиент-серверные сокеты и работать с ними.
Предоставляет методы для работы с файлами/каталогами.
Позволяет работать с событиями Freeswitch
Позволяет работать с файловым дескриптором Freeswitch (упр. воспроизведением и тд).
Предоставляет методы для работы с XML через Freeswitch XML API.
Dialplan example:
<extension name="quickjs-test">
<condition field="destination_number" expression="^(12345)$" >
<action application="qjs" data="my-scrips.js arg1 arg2 argr3"/>
</condition>
</extension>