По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В последнее время DevOps является одним из самых громких словечек в мире технологий, поскольку предлагает организации огромное количество преимуществ для сокращения жизненного цикла разработки программного обеспечения. Что такое DevOps? Нет единого определения или правильного ответа на вопрос «Что такое DevOps». DevOps (акроним от англ. development и operations) не является инструментом, технологией или какой-либо структурой; это больше философия и концепция. Это набор практик, сочетающий разработку программного обеспечения (Dev) и ИТ-операции (Ops), который помогает сократить жизненный цикл разработки системы и обеспечить непрерывную интеграцию и поставку с высоким качеством программного обеспечения. Подробно про DevOps можно прочитать в нашей статье ”DevOps – это философия будущего: кто, что и как?” и в нашем разделе про него. Преимущества DevOps Улучшенное сотрудничество и общение Ускоренная доставка программного обеспечения или продуктов Постоянное снижение затрат Улучшенный процесс Ускоренное решение проблем В мире DevOps нет ни одного волшебного инструмента, который бы соответствовал всем потребностям. Речь идет о выборе правильного инструмента, который соответствует потребностям организации. Давайте узнаем о них. Что такое DevOps, что нужно знать и сколько получают DevOps - специалисты? Инструменты DevOps Планирование и сотрудничество JIRA JIRA - это один из популярных инструментов управления проектами, разработанный Atlassian, который используется для отслеживания проблем, ошибок и проектов. Это позволяет пользователю отслеживать проект и выпускать статус. Его можно легко интегрировать с другими продуктами Atlassian, такими как Bitbucket, в дополнение к другим инструментам DevOps, таким как Jenkins. Slack Slack - это бесплатный инструмент для совместной работы на основе облака, для групповой коммуникации и совместной работе в одном месте. Этот инструмент также можно использовать для обмена документами и другой информацией среди членов команды. Это также может быть легко интегрировано с другими инструментами, такими как GIT, Jenkins, JIRA и так далее. А еще Slack можно интегрировать с Asterisk Zoom Zoom - это платформа для веб-конференций и мгновенного обмена экранами. Вы можете общаться со своей командой через аудио или видео. Неважно, насколько велика ваша команда, Zoom способен принять до 1000 получателей на онлайн-встречу. Clarizen Clarizen - это программное обеспечение для совместной работы и управления проектами, которое помогает отслеживать проблемы, управлять задачами и управлять портфелем проектов. Clarizen легко настроить, и он имеет удобный интерактивный интерфейс пользователя. Asana Asana - это мобильное и веб-приложение, которое помогает командам эффективно и результативно организовывать, отслеживать и управлять своей работой. Он используется для отслеживания ежедневных командных задач и поддержки обмена сообщениями и общения в организации. Управление исходным кодом SVN SVN - это централизованный инструмент контроля версий и исходного кода, разработанный Apache. SVN помогает разработчикам поддерживать разные версии исходного кода и вести полную историю всех изменений. Git Git - это распределенная система контроля версий, которая нацелена на скорость, целостность данных, поддержку распределенных, нелинейных рабочих процессов. Помимо управления исходным кодом, его также можно использовать для отслеживания изменений в любом наборе файлов. Подробнее про Git Bitbucket Bitbucket - это веб-хостинговая платформа, разработанная Atlassian. Bitbucket также предлагает эффективную систему проверки кода и отслеживает все изменения в коде. Его можно легко интегрировать с другими инструментами DevOps, такими как Jenkins, Bamboo. GitHub GitHub - это платформа для размещения кода, предназначенная для контроля версий и совместной работы. Он предлагает все функции распределенного контроля версий и управления исходным кодом (SCM) в Git в дополнение к своим функциям. GitHub предлагает функции контроля доступа и совместной работы, такие как отслеживание ошибок, создание функций и запросов, управление задачами и так далее. Инструменты для сборки Ant Apache Ant - это инструмент для сборки и развертывания на основе Java с открытым исходным кодом. Он поддерживает формат файла XML. Он имеет несколько встроенных задач, позволяющих нам компилировать, собирать, тестировать и запускать приложения Java. Maven Maven - это инструмент для автоматизации сборки, который в основном используется для Java-проектов. Он содержит файл XML, в котором описывается создаваемый программный проект, его зависимости от других внешних компонентов и модулей, последовательность сборки, каталоги и другие необходимые подключаемые модули. Подробно про Maven Grunt Grunt - это инструмент командной строки Javascript, который помогает создавать приложения и помогает разработчикам автоматизировать повторяющиеся задачи, такие как компиляция, модульное тестирование, кодирование кода, проверка и так далее. Это хорошая альтернатива для таких инструментов, как Make или Ant. Gradle Gradle - это система автоматизации сборки с открытым исходным кодом, основанная на концепциях Apache Maven и Apache Ant. Он поддерживает Groovy правильный язык программирования вместо XML-файла конфигурации. Он предлагает поддержку добавочных сборок, автоматически определяя, какие части сборки обновлены. Управление конфигурацией Puppet Puppet - это инструмент управления конфигурацией с открытым исходным кодом, используемый для настройки, развертывания и управления многочисленными серверами. Этот инструмент поддерживает концепцию инфраструктуры как кода и написан на Ruby DSL. Он также поддерживает динамическое масштабирование машин по мере необходимости. Подробно про Puppet, его плюсы и минусы и примеры использования Chef Chef - это инструмент управления конфигурацией с открытым исходным кодом, разработанный Opscode с использованием Ruby для управления инфраструктурой на виртуальных или физических машинах. Он также помогает в управлении сложной инфраструктурой на виртуальных, физических и облачных машинах. Подробно про Chef и его плюсы и минусы Ansible Ansible - это инструмент для управления ИТ-конфигурацией с открытым исходным кодом, обеспечения программного обеспечения, оркестровки и развертывания приложений. Это простой, но мощный инструмент для автоматизации простых и сложных многоуровневых ИТ-приложений. Подробно про Ansible и его плюсы и минусы SaltStack SaltStack - это программное обеспечение с открытым исходным кодом, написанное на python и использующее push-модель для выполнения команд по протоколу SSH. Он предлагает поддержку как горизонтального, так и вертикального масштабирования. Он поддерживает шаблоны YAML для записи любых скриптов. Terraform Terraform - это инструмент с открытым исходным кодом для безопасного, эффективного построения, изменения, развертывания и управления версиями инфраструктуры. Он используется для управления существующими и популярными поставщиками услуг, а также для создания собственных решений. Это помогает в определении инфраструктуры в конфиге или коде и позволит пользователю легко перестраивать или изменять и отслеживать изменения в инфраструктуре. Vagrant Vagrant является одним из популярных инструментов для создания и управления виртуальными машинами (VM). Он имеет простой в использовании и настраиваемый рабочий процесс, ориентированный на автоматизацию. Это помогает сократить время настройки среды разработки, увеличивает производственный паритет. Подробно про Vagrant Непрерывная интеграция Jenkins Jenkins является одним из самых популярных инструментов DevOps с открытым исходным кодом для поддержки непрерывной интеграции и доставки через DevOps. Это позволяет осуществлять непрерывную интеграцию и непрерывную доставку проектов независимо от того, над чем работают пользователи платформы, с помощью различных конвейеров сборки и развертывания. Jenkins можно интегрировать с несколькими инструментами тестирования и развертывания. Подробно про Jenkins Travis CI Travis CI - это облачная распределенная платформа непрерывной интеграции, используемая для создания и тестирования проектов, размещенных на GitHub и Bitbucket. Это настраивается путем добавления файла YAML. Его можно протестировать бесплатно для проектов с открытым исходным кодом и на платной основе для частного проекта. Bamboo Bamboo является одним из популярных продуктов, разработанных Atlassian для поддержки непрерывной непрерывной интеграции. Его большая часть функциональности предварительно встроена, что означает, что нам не нужно загружать различные плагины, такие как Jenkins. Он также поддерживает плавную интеграцию с другими продуктами Atlassian, такими как JIRA и Bitbucket. Hudson Hudson - это свободное программное обеспечение, написанное на JAVA и работающее в контейнере сервлетов, например, GlassFish и Apache Tomcat. Он обеспечивает возможность запуска вашего пакета автоматизации с любыми изменениями в соответствующей системе управления исходными кодами, такими как GIT, SVN и так далее. Он также обеспечивает поддержку всех базовых проектов maven и Java. TeamCity TeamCity - это непрерывная интеграция на основе сервера, которая создает инструмент управления, разработанный JetBrains. Он имеет простой и удобный пользовательский интерфейс (UI) и обеспечивает прогресс сборки, детализирует информацию о сборке и хронологическую информацию для всех конфигураций и проектов. CircleCI CircleCI доступен как в виде облачных, так и локальных решений для непрерывной интеграции. Запускать и поддерживать легковесные и легкочитаемые конфигурации YAML просто и быстро. Непрерывная безопасность Snyk Интегрируйте Snyk в жизненный цикл разработки, чтобы автоматически находить и исправлять уязвимости безопасности с открытым исходным кодом. Он поддерживает JS, .Net, PHP, NPM, jQuery, Python, Java и так далее, и может быть интегрирован в кодирование, управление кодом, CI/CI, контейнер и развертывание. Snyk имеет самую большую базу уязвимостей с открытым исходным кодом Netsparker Netsparker автоматически сканирует ваше приложение на наличие уязвимостей и предоставляет действенные секретные отчеты, чтобы вы могли действовать в соответствии с приоритетом. Сценарий безопасности DevOps заключается в проверке нового коммита и сообщении об ошибке непосредственно в систему отслеживания, например, Jira или GitHub, и повторном сканировании после исправления разработчиком. Вы видите, что это интегрируется на каждом этапе SDLC (Software Development Life Cycle - жизненный цикл разработки). Тестирование Selenium Selenium - самый популярный инструмент для тестирования с открытым исходным кодом. Он поддерживает автоматизацию тестирования в различных браузерах и операционных системах. Его легко интегрировать с инструментами управления тестированием, такими как ALM, JIRA, а также с другими инструментами DevOps, такими как Jenkins, Teamcity, Bamboo и так далее. TestNG TestNG - это среда тестирования с открытым исходным кодом, разработанная и вдохновленная Junit и Nunit. Ее можно легко интегрировать с веб-драйвером selenium для настройки и запуска сценариев автоматизации тестирования. Она также генерирует различные отчеты о тестировании, такие как HTML или XSLT. JUnit JUnit - это инфраструктура модульного тестирования с открытым исходным кодом, используемая разработчиками для написания и запуска повторяющихся тестов. JUnit поддерживает различные аннотации тестов, с помощью которых любой разработчик может написать цельный тестовый блок. Его легко интегрировать с другими инструментами DevOps, такими как Jenkins, GIT и так далее. Мониторинг Nagios Nagios - это открытый исходный код и один из самых популярных инструментов для непрерывного мониторинга. Nagios помогает отслеживать системы, приложения, услуги и бизнес-процессы в культуре DevOps. Он предупреждает пользователей, когда что-то не так с инфраструктурой, и предупреждает их, когда проблема решена. Подробно про Nagios Grafana Grafana - это аналитическая платформа с открытым исходным кодом, позволяющая отслеживать все показатели инфраструктуры, приложений и аппаратных устройств. Вы можете визуализировать данные, создавать и совместно использовать панель инструментов, настраивать оповещения. Вы можете получать данные из более чем 30 источников, включая Prometheus, InfluxDB, Elasticsearch, AWS CloudWatch и так далее. Sensu Sensu - это инструмент для мониторинга с открытым исходным кодом, написанный на Ruby, который помогает просто и эффективно контролировать серверы, сервисы, приложения, облачную инфраструктуру. Его легко масштабировать, чтобы вы могли легко отслеживать тысячи серверов. New Relic New Relic - это программный аналитический продукт для мониторинга производительности приложений (APM - Application Performance Monitoring), который предоставляет в реальном времени трендовые данные о производительности веб-приложений и уровне удовлетворенности, которое испытывают конечные пользователи. Он поддерживает сквозную трассировку транзакций и отображает их с помощью различных цветовых диаграмм, графиков и отчетов. Datadog Datadog - это инструментальный инструмент метрики сервера. Он поддерживает интеграцию с различными веб-серверами, приложениями и облачными серверами. Его сервисная панель предоставляет различные графики мониторинга в реальном времени по всей инфраструктуре. ELK ELK - это коллекция из трех продуктов с открытым исходным кодом - Elasticsearch, Logstash и Kibana, которые разрабатываются, управляются и поддерживаются компанией Elastic. Он позволяет пользователям получать данные из любого источника в любом формате, а затем искать, анализировать и визуализировать эти данные в режиме реального времени. Облачный хостинг AWS AWS - это веб-хостинговая платформа, созданная Amazon, которая предлагает гибкие, надежные, масштабируемые, простые в использовании, масштабируемые и экономически эффективные решения. Используя эту облачную платформу, нам не нужно беспокоиться о настройке ИТ-инфраструктуры, которая обычно занимает достаточно много времени. Azure Azure - это платформа облачных вычислений, разработанная Microsoft для создания, развертывания, тестирования и управления приложениями и службами через глобальную сеть своих центров обработки данных. Службы, предоставляемые Microsoft Azure, представлены в форме PaaS (платформа как услуга) и IaaS (инфраструктура как услуга). GCP Google Cloud - это полный набор услуг облачного хостинга и вычислений, предлагаемых Google. Он поддерживает широкий спектр услуг для вычислений, хранения и разработки приложений, которые используют Google Hardware. Контейнеры и оркестровка Docker Docker - это инструмент для создания, развертывания и запуска приложений с использованием контейнеров. Этот контейнер позволяет разработчику упаковывать приложение со всеми необходимыми ему компонентами и подкомпонентами, такими как библиотеки и другие зависимости, и отправлять все это в виде одного пакета. Подробно про Docker, Docker Compose и Docker Swarm Kubernetes Kubernetes - это система контейнерной оркестрации с открытым исходным кодом, изначально разработанная Google, и в настоящее время она поддерживается Cloud Native Computing Foundation. Он используется для автоматизации развертывания, масштабирования и управления приложениями. Он работает с другими инструментами-контейнерами, включая Docker. Подробно про Kubernetes и сравнение Kubernetes c Docker
img
В этой статье мы рассмотрим переменные, которые отвечают за локализацию и кодировку операционной системы. Данная тема достаточно важна, т.к. некоторые прикладные сервисы требуют нестандартной кодировки или региональной локализации. В Linux системах есть основная переменная $LANG – которая задает основной язык системы. Есть и другие переменные, но они берут изначально настройки с этой основной переменной $LANG. Можно настроить отдельные какие-то переменные, но можно все же давать значение основной переменной $LANG и она будет давать значение всем остальным. Есть так же переменная LC_ALL – которая позволяет нам разом перезаписать все языковые настройки. Есть также утилита locale которая показывает кучу переменных, которые относятся к языковым настройкам. $LANG= – данную переменную обычно используют для написания скриптов, чтобы те или иные настройки установить по умолчанию для выполнения скрипта. В большинстве случаев данная настройка включает английский язык по умолчанию. Есть такая команда env, которая выводит заданные переменные в системе. И тут в частности, есть переменная которая отвечает за языковые настройки. В нашем случае LANG=en_US.UTF-8, т.к скриншот делался на операционной системе с английской локализацией по умолчанию. Мы видим en_US в кодировке UTF-8. En_US – говорит о том, что у нас используется американский английский язык. Посмотреть все переменные относящиеся к данной локализации мы можем с помощью утилиты locale. Как вы видите все остальные переменные на данной установленной операционной системе тоже американские. Почему это важно? Во-первых, это важно для логгирования. С такими настройками система будет писать файлы системных и других логов в американском формате yyyy-mm-dd (год-месяц-день: 2006-12-31), в русском формате же правильно будет dd-mm-yyyy. И при передаче логов из одной системы в другую возникнут ошибки. Другой пример - бывают нестандартные решения, допустим хранение базы данных 1С в postgre. Для того чтобы сервер приложений корректно работал с базой опять же необходима русская локализация. И таких примеров взаимодействия можно привести достаточно много. Теперь, если у нас появилась необходимость поменять какую-нибудь, переменную, например, LC_TIME то делаем следующее: LC_TIME=ru_RU.UTF-8 – задаем переменную. export LC_TIME – загружаем переменную. Мы можем сразу все настройки изменить - LC_ALL=ru_RU.UTF-8 Далее export LC_ALL. Если мы ошибемся с вводом локали (языковой пакет настроек) или в системе не загружена такая локаль, то система нам выдаст ошибку: Надо выполнить инсталляцию языкового пакета sudo apt-get install language-pack-ru Генерация файла с обновленной информацией о добавленных пакетах в систему: sudo locale-gen И после этого опять попробовать сменить. Для возврата в исходное состояние настроек мы можем выполнить команду unset LC_ALL. После выполнения данной команды все настройки языковые системы вернутся в исходное состояние. Немного о кодировке. Кодировка - это представление символов в определенном виде. Самые распространенные кодировки, используемые в Linux: ASCII – 128 основных символов; ISO-8859 – большинство латинских символов; UTF-8 -символы Unicode. Для конвертации используется утилита iconv, но есть более практический инструмент. Если нам необходимо конвертировать какой-то файл в другой, то проще всего использовать Notepad++. Открываем файл, в меню выбираем пункт кодировка. Программа покажет текущую и меняем на интересующую нас. Затем сохраняем. В случае если у нас только консольное подключение, делаем это с помощью iconv. Общий вид команды: iconv [опция] [-f кодировка 1] [-t кодировка 2] [исходный файл] [целевой файл] Установка и настройка часовых зон. Утилита tzselect позволяет осуществить поиск нужной временной зоны. Появляется мастер пошаговый, который позволяет сделать свой выбор и в конце дает инструкцию, как сделать, чтобы выбор сохранился. Вторая утилита это date, которая выводит текущую дату и время, если запустить ее без параметров, а также позволяет установить их. Опции и форматы можно посмотреть при помощи команды man date Для установки даты и времени необходимы права суперпользователя. sudo date -s “yyyymmdd hh:mm” – обратите на формат вводимых данных.
img
Ищешь бесплатное решение по реализации исходящих звонков из CRM Битрикс24 в связке с Asterisk? Поздравляем, нашел. Можешь закрыть все остальные вкладки и оставить только эту – пошаговое руководство по интеграции Б24 и Астериска в статье :) Как это работает? Легко (на этом можно было бы закончить). Мы создаем исходящий вебхук в Битрикс, он дергает php - скрипт на Asterisk каждый раз, когда мы будем нажимать на номер телефона в лиде, сделке, контакте – где угодно. Поехали. Попробовать Битрикс24 Подготовка Создадим AMI (Asterisk Manager Interface)– юзера, через которого будем инициировать вызовы. Откроем файл настройки: vim /etc/asterisk/manager.conf Обращаем внимание на секцию [general] - параметр enabled должен быть в значении yes: [general] enabled = yes // вот этот параметр :) port = 5038 bindaddr = 0.0.0.0 Проверьте, чтобы в самом конце файла manager.conf были следующие строки (если их нет, добавьте): #include manager_custom.conf Проверили. А теперь открываем файл /etc/asterisk/manager_custom.conf (если его нет – создайте и дайте права) и добавляем туда: [имя] secret = пароль deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 permit=ip_адрес_Asterisk/маска read = all,system,call,log,verbose,command,agent,user,config,originate write = all,system,call,log,verbose,command,agent,user,config,originate имя - придумайте имя для юзера; пароль - создайте устойчивый к взломам пароль, с помощью сервисов онлайн генерации, например; ip_адрес_Asterisk/маска - укажите вашу подсеть. В указанной подсети должен находится IP – адрес, с которого скрипт будет обращаться к AMI. Пример записи - 192.168.1.0/255.255.255.0; Переходим в Битрикс24 и создаем вебхуки. Вебхуки Первый вебхук мы сделаем входящим – по нему наш скрипт будет получать внутренний номер сотрудника по его идентификатору. Переходим в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Входящий вебхук. Делаем вот что: Название - любое название, как вам удобно; Описание - нужный момент, чтобы не запутаться в вебхуках; Права доступа - отметьте галочкой Пользователи (user); Нажимаем сохранить. Должно получиться примерно вот так: Обратите внимание: на скриншоте, красной линией подчеркнут URL параметра Пример URL для вызова REST. Скопируйте его ровно до последней части /profile/. Например, у нас получилось: https://merionet.bitrix24.ru/rest/2/1a2b3c4d5e6f7g8h Сохраните этот URL – он нам еще пригодится :) Перед тем, как мы сделаем исходящий вебхук, давайте обсудим будущий URL нашего скрипта. Так как он будет располагаться в веб директории, мы предлагаем вам сгенерировать последовательно 3 директории, в которых будет лежать скрипт. И вот о чем мы: представим, что ваш домен выглядит вот так: http://ilovemerionet.ru/ Гуд. Давайте последовательно сгенерируем 3 уникальных названия директорий, например: IpVy7ul85sz1Doi C49BNGJW3Yf30eo qBN0NBC56lj07yh После чего, в директории /var/www/html/ создадим три вложенных папки, чтобы наш файл в конечно итоге размещался в директории: /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Сам файл скрипта, который мы сгенерируем, будет называться index.php, тем самым, вебхук со стороны Битрикс24 будет обращаться по следующему URL: http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Кажется, разобрались :) Теперь создаем исходящий вебхук – прыгаем в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Исходящий вебхук. Делаем вот что: Код авторизации - это наш проверочный код, который мы используем в скрипте; Адрес обработчика - как мы привели пример выше, тут будет http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ - у вас, само собой, свой URL :); Название - явное название, чтобы не запутаться. Сделайте Asterisk Calls, например?; Комментарий - можете оставить комментарий для себя, чтобы было проще разобраться; Тип события - выбираем Инициация звонка через приложение (ONEXTERNALCALLSTART); Великолепно. Мы выходим на финишную прямую. Скрипт для Asterisk Ловите скрипт, который будет принимать вебхуки от Битрикс24. Комментарии к самым важным строкам, как всегда, присутствуют: <?php $check_token = "Код_авторизации"; // это значение будет прилетать нам в вебхуке. А мы будем его сравнивать, чтобы быть уверенными, что это Битрикс; $user_hook_url = "Часть_входящего_вебхука"; // нужно, для получения внутреннего номера пользователя, которые инициирует звонок; $ami_login = "ami_логин"; // логин к AMI, который мы создавали ранее; $ami_password = "пароль"; // пароль к AMI, который мы создавали ранее; $strhost = "IP_адрес"; // IP - адрес вашего Asterisk; if (strcmp($_POST['auth']['application_token'], $check_token) === 0) { function writeToLog($data, $title = '') { $log = " ------------------------ "; $log .= date("Y.m.d G:i:s") . " "; $log .= (strlen($title) > 0 ? $title : 'DEBUG') . " "; $log .= print_r($data, 1); $log .= " ------------------------ "; file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } writeToLog($_REQUEST, 'incoming'); $UID = $_POST['data']['USER_ID']; $bitrix_contact_url = "$user_hook_url/user.get.json?ID=$UID"; $btc = curl_init(); curl_setopt ($btc, CURLOPT_URL,$bitrix_contact_url); curl_setopt ($btc, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($btc, CURLOPT_TIMEOUT, 60); curl_setopt ($btc, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($btc, CURLOPT_RETURNTRANSFER, 1); $bitrix_contact = curl_exec ($btc); curl_close($btc); $bitrix_contact_o = json_decode($bitrix_contact, true); $cid = $bitrix_contact_o['result'][0]['UF_PHONE_INNER']; $strport = "5038"; $timeout = "5"; $num = str_replace("+","",$_POST['data']['PHONE_NUMBER_INTERNATIONAL']); $callid = $_POST['data']['CALL_ID']; $c="from-internal"; $p="1"; $errno=0 ; $errstr=0 ; $sconn = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn) { echo "$errstr ($errno) "; } else { $sconn1 = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn1) { echo "$errstr ($errno) "; } else { fputs($sconn1, "Action: login "); fputs($sconn1, "Username: $ami_login "); fputs($sconn1, "Secret: $ami_password "); fputs($sconn1, "Events: off "); usleep(500); fputs($sconn1, "Action: Setvar "); fputs($sconn1, "Variable: B24ID "); fputs($sconn1, "Value: $callid/$cid "); fputs($sconn1, "Action: Logoff "); usleep(500); $wrets1=fgets($sconn1,128); fclose($sconn1);} fputs($sconn, "Action: login "); fputs($sconn, "Username: $ami_login "); fputs($sconn, "Secret: $ami_password "); fputs($sconn, "Events: off "); usleep(500); fputs($sconn, "Action: Originate "); fputs($sconn, "Channel: SIP/$cid "); fputs($sconn, "Callerid: $cid "); fputs($sconn, "Timeout: 20000 "); fputs($sconn, "Context: $c "); fputs($sconn, "Exten: $num "); fputs($sconn, "Priority: $p "); fputs($sconn, "Async: yes " ); usleep(500); $wrets=fgets($sconn,128); fclose($sconn); exit; }} else { exit; }; ?> Скачать скрипт интеграции После загрузки файла, сохраните его с расширением .php В нем вам нужно поменять 5 переменных: $check_token - код авторизации, который вы получили на этапе создания исходящего вебхука; $user_hook_url - та часть входящего вебхука, которая подчеркнута на скриншоте до слов /profile/; $ami_login - логин в AMI, создавали ранее; $ami_password - пароль в AMI; $strhost - IP - адрес вашего Asterisk; Чтобы скрипт заработал, нужно, как мы говорили ранее, загрузить его в директорию /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ (после генерации директорий у вас будет свой путь!) и дать следующие команды: dos2unix /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chown asterisk:asterisk /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chmod 775 /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php Кстати, профит этого скрипта в том, что он ведет логирование в файле hook.log, который будет располагаться в той же директории. Если кто – то из ваших менеджеров скажет, что не смог позвонить клиенту – это будет легко проверить :) Почти готово. Остался только один штрих. Снова открываем CRM Битрикс24, переходим в сегмент Телефония → Настройки и в параметре Настройка номеров по-умолчанию выбираем созданный нами вебхук (у нас он называется Приложения: Asterisk Calls: А вот теперь готово. Звоним Звонит :) Но! Не закрывает карточку и не добавляет отметку об исходящем звонке в сущность CRM (запись разговора). Внимательные пользователи обратят внимание – в AMI сегменте скрипта, который обсуждали ранее, мы кинули команду Setvar (присвоение переменной) к B24ID = $callid. Тем самым, на всем протяжении звонка у нас будет идентификатор этой телефонной транзакции. Фактически, чтобы получить отметку о звонке, запись разговора и прочее, по факту окончания разговора нужно методом telephony.externalcall.finish кинуть массив данных, где будет отметка об идентификаторе вызова (которую передаем через диалплан), телефон инициатора вызова, длительность и ссылка на запись разговора. Если данная статья вызовет интерес, мы покажем, как это сделать. Удачи с настройкой :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59