Oktell IP PBX: Отправляем SMS
Oktell IP PBX в сценариях может легко отправлять SMS, а вот как быть с обычными пользователями? Для них я написал небольшую веб-страничку:
Oktell IP PBX в сценариях может легко отправлять SMS, а вот как быть с обычными пользователями? Для них я написал небольшую веб-страничку:
Сегодня у нас есть FreeSWITCH с подключенными телефонами и отдельно у менеджеров установлен Terrasoft CRM. Необходимо обеспечить возможность определения имени из Terrasoft CRM звонящего абонента на SIP-телефонах. Для этого я написал PHP-скриптик:
Если Вы используете Oktell IP PBX без модуля КЦ и Вы не умеете разрабатывать плагины, а необходимо быстро решить вопрос: При входящем звонке отобразить историю всех звонков по номеру с комментариями. Как это сделать? Пойдем через веб-страничку 🙂
Для начало разработаем SQL запрос, что бы увидеть все входящие, исходящие и пропущенные звонки по номеру:
SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'входящий' AS [D] ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id WHERE ([s].[AOutNumber] like '$c' AND [s].[Bstr] not like 'IVR') UNION SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'исходящий' AS [D] ,CONVERT(varchar(max), [s].[Bstr]) as [Abonent] ,CONVERT(varchar(max), [s].[Astr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].BLineId = [l].id WHERE [s].[BOutNumber] like '$c' AND [s].[Astr] not like 'IVR' UNION SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'пропущенный' AS [D] ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id WHERE [s].[AOutNumber] like '$c' AND [s].[Bstr] like 'IVR' AND [s].[ReasonStop] = '3' ORDER BY [TimeAnswer] DESC
Обновил один из серверов с Debian lenny до squeeze. Все прошло гладко, только вот на одном из старых сайтов (joomla 1.0) посыпалась куча deprecated функций PHP. Не хотел трогать код этого сайта, решил запустить для него отдельно PHP5.2 на том же сервере. Вот как это я реализовал.
Устанавливаем зависимости, скачиваем PHP5.2 и распаковываем архив:
aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev cd /tmp wget http://www.php.net/get/php-5.2.17.tar.gz/from/ru.php.net/mirror -O php-5.2.17.tar.gz tar zxvf php-5.2.17.tar.gz cd php-5.2.17
Из исходников собираем PHP5.2 и устанавливаем в /opt/php5.2:
./configure --prefix=/opt/php5.2 --with-config-file-path=/opt/php5.2 --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect make make install
Проверяем:
/opt/php5.2/bin/php -v PHP 5.2.17 (cli) (built: Oct 22 2011 15:05:51) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
Запускать для этого сайта PHP5.2 будем через fastcgi.
aptitude install libapache2-mod-fastcgi a2enmod cgi fastcgi actions invoke-rc.d apache2 restart
Создадим исполняемый файл /opt/php5.2/bin/php-cgi, который содержит:
#!/bin/sh PHPRC="/opt/php5.2/" export PHPRC PHP_FCGI_CHILDREN=4 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /opt/php5.2/bin/php-cgi
В виртуальном хосте нужного сайта добавляем:
SetHandler application/x-httpd-php5 ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi Action application/x-httpd-php5 /php52-cgi AddHandler application/x-httpd-php5 .php
Перезапустим Apache и проверяем что наш сайт уже использует PHP 5.2, когда все остальные 5.3
invoke-rc.d apache2 restart
Виникла необхідність обмежити кількість повідомлень, які розміщують певні користувачі на форумі phpBB 3.0.7. Віднайшов рішення цієї задачі!
Створюємо файл modinstall.php наступного вмісту:
< ?php define('IN_PHPBB', true); $phpbb_root_path = './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); $user->session_begin(); $auth->acl($user->data); $user->setup(); include($phpbb_root_path . 'includes/acp/auth.' . $phpEx); $auth_admin = new auth_admin(); $result = $auth_admin->acl_add_option(array( 'local' => array('u_limit_posts_per_day'), 'global' => array('u_limit_posts_per_day') )); print ('Permissions install ' . ($result ? 'completed successfully' : 'failed')); ?>
Встановлюємо на файл всі необхідні прав та виконуємо в браузері. Після, файл видаляємо!
Після того, як я переніс один сайт на новий сервер, то отримав замість тексту, щось таке:
?????? ??? ????? ?????????? ???? ???? ??
Проблема в тім, що у попередній версії MySQL текст у базі зберігався у кодуванні Windows-1251, після оновлення — UTF8. Вирішення проблеми, оголосити набір символів у PHP скрипті відразу після з’єднання:
@mysql_pconnect($server, $user, $password); $db_connect_id = @mysql_select_db($dbname); @mysql_query(" SET NAMES 'cp1251' ", $db_connect_id);
Целые день пытался корректно загрузить файл в Microsoft SQL в Blob Data Field. И вот, решение найдено! Что бы Вам потом не пришлось много времени потратить на это, рассказываю:
$FileData = addslashes(fread(fopen($filePath, "rb"), filesize($filePath)));
Вот так мы преобразуем файл, а дальше — обычный INSERT в базу!