āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ IP-PBX Asterisk āĻāĻŦāĻ CRM Bitrix24 āĻ¸āĻāĻšāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤
āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§, āĻ¸āĻŦāĻāĻŋāĻā§ āĻŽāĻžāĻ¨āĻ:
- Bitrix24-āĻ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻĢā§āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, Asterisk āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ¨āĻŽā§āĻŦāĻ°āĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§ āĻ¯āĻžāĻ° āĻĒāĻā§āĻˇā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻĢā§āĻ¨ āĻ¨āĻŽā§āĻŦāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ Bitrix24-āĻ, āĻāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ˛ā§āĻ° āĻļā§āĻˇā§, āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ āĻāĻžāĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤
- Asterisk āĻŦāĻžāĻāĻ°ā§ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻ˛ āĻĒāĻžāĻ¯āĻŧ - Bitrix24 āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻžāĻ°ā§āĻĄ āĻĻā§āĻāĻžāĻ āĻ¯āĻžāĻ° āĻ¨āĻŽā§āĻŦāĻ°ā§ āĻāĻ āĻāĻ˛ āĻāĻ¸ā§āĻā§āĨ¤
āĻ¯āĻĻāĻŋ āĻāĻŽāĻ¨ āĻā§āĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¨āĻž āĻĨāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻŋāĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻĄ āĻā§āĻ˛āĻŦāĨ¤
āĻāĻ˛āĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻĄā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ āĻāĻžāĻ¨āĨ¤
āĻāĻžāĻā§āĻ° āĻ¨ā§āĻā§ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻŦ āĻā§āĻāĻžāĻŦā§ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŦā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŋāĻĨā§āĻŦā§āĻ° āĻāĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ - āĻšā§āĻ¯āĻžāĻ, āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻŋ āĻ¨āĻŋāĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨!
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻŦāĻ°āĻŖ
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨āĻā§ āĻāĻ˛āĻŽāĻŋ āĻŦāĻ˛ā§āĻāĻŋāĨ¤ CallMe āĻšāĻ˛ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ-āĻ¤ā§ āĻ˛ā§āĻāĻž āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĨ¤
āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž
- āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ 5.6
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻāĻāĻŽāĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ - āĻ¸ā§āĻ°āĻāĻžāĻ°
- Nginx + php-fpm
- āĻ āĻ§ā§āĻā§āĻˇāĻ
- AMI (āĻ¸ā§āĻāĻžāĻ°āĻŋāĻ¸ā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸)
- āĻŦāĻŋāĻā§āĻ°āĻŋāĻā§āĻ¸ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ (āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ REST API āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨)
āĻĒā§āĻ°āĻžāĻ-āĻ¸ā§āĻāĻŋāĻ
Asterisk āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ nginx+php-fpm), āĻ¸ā§āĻĒāĻžāĻ°āĻāĻžāĻāĻāĻžāĻ° āĻāĻŦāĻ āĻāĻŋāĻāĨ¤
āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄ (CentOS):
yum install nginx php-fpm supervisor git
āĻāĻŽāĻ°āĻž āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ¯āĻžāĻ, āĻāĻŋāĻ āĻĨā§āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻā§āĻ¨ā§ āĻāĻ¨āĻŋ āĻāĻŦāĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻŋ:
cd /var/www
git clone https://github.com/ViStepRU/callme.git
chown nginx. -R callme/
āĻāĻ° āĻĒāĻ°ā§, āĻāĻ¸ā§āĻ¨ nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻŋ, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤
/etc/nginx/conf.d/pbx.vistep.ru.conf
server {
server_name www.pbx.vistep.ru pbx.vistep.ru;
listen *:80;
rewrite ^ https://pbx.vistep.ru$request_uri? permanent;
}
server {
# listen *:80;
# server_name pbx.vistep.ru;
access_log /var/log/nginx/pbx.vistep.ru.access.log main;
error_log /var/log/nginx/pbx.vistep.ru.error.log;
listen 443 ssl http2;
server_name pbx.vistep.ru;
resolver 8.8.8.8;
ssl_stapling on;
ssl on;
ssl_certificate /etc/letsencrypt/live/pbx.vistep.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pbx.vistep.ru/privkey.pem;
ssl_dhparam /etc/nginx/certs/dhparam.pem;
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:2m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000;";
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
root /var/www/callme;
index index.php;
location ~ /. {
deny all; # СаĐŋŅĐĩŅ Đ´ĐģŅ ŅĐēŅŅŅŅŅ
ŅĐ°ĐšĐģОв
}
location ~* /(?:uploads|files)/.*.php$ {
deny all; # СаĐŋŅĐĩŅ Đ´ĐģŅ СаĐŗŅŅĐļĐĩĐŊĐŊŅŅ
ŅĐēŅиĐŋŅОв
}
location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max; # ĐēĐĩŅиŅОваĐŊиĐĩ ŅŅĐ°ŅиĐēи
}
location ~ .php {
root /var/www/callme;
index index.php;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
āĻāĻŽāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ, āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž, āĻāĻāĻāĻŋ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻĒā§āĻ°āĻžāĻĒā§āĻ¤āĻŋ āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¸ā§āĻ¯ā§āĻā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻā§āĻĄāĻŧā§ āĻĻā§āĻŦ - āĻāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻā§āĻ¨ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¨ā§āĻ, āĻāĻāĻŋ http āĻāĻŦāĻ https āĻāĻāĻ¯āĻŧ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž https āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻāĻ¸ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻŋāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻ˛āĻŋāĻā§āĻāĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§ āĻĻā§āĻāĻ¤ā§ āĻšāĻŦā§
Bitrix24 āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋāĨ¤
āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻāĨ¤
āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨āĻŋāĻ¸ā§āĻā§āĻ°ā§āĻāĻ° āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻā§āĻ° āĻ āĻ§ā§āĻ¨ā§ (āĻāĻāĻĄāĻŋ 1 āĻ¸āĻš), āĻĒāĻĨāĻāĻŋ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§āĻ¨: āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ -> āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ -> āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ -> āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ
āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻā§āĻ° āĻŽāĻ¤ā§ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨:
āĻāĻŦāĻ save āĻ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, Bitrix24 āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻā§āĻ° URL āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ /āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛/ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāĻ¨āĻžāĻ° URL āĻāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ - āĻāĻāĻŋ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ā§ˇ
āĻāĻŽāĻžāĻ° āĻāĻā§ āĻāĻāĻž https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻāĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ -> āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ -> āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ -> āĻāĻāĻāĻā§āĻ¯āĻŧāĻŋāĻ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻā§ˇ
āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻŦāĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ°āĻ¯āĻŧā§āĻā§:
āĻ
āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻā§āĻĄ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨
āĻāĻŽāĻžāĻ° āĻāĻā§ āĻāĻāĻž xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6
. āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻāĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§; āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ!
Bitrix24 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ SSL āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ (āĻāĻĒāĻ¨āĻŋ letsencrypt āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨), āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ Bitrix api āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž - āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻ¸āĻāĻ¸āĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ!
"āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž" āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻ āĻĨā§āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§!
āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻ¸ā§āĻ¨ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° CallMeOut āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋ (āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ PBX-āĻāĻ° āĻ¨āĻŽā§āĻŦāĻ°ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻŦā§āĻ¨, āĻāĻ˛āĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻāĻŋ āĻāĻĄāĻŧā§ āĻ¯āĻžāĻŦā§)āĨ¤
āĻŽā§āĻ¨ā§āĻ¤ā§, āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨: āĻāĻ°āĻ -> āĻā§āĻ˛āĻŋāĻĢā§āĻ¨āĻŋ -> āĻāĻ°āĻ -> āĻ¸ā§āĻāĻŋāĻāĻ¸, "āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻāĻāĻāĻā§āĻ¯āĻŧāĻŋāĻ āĻāĻ˛ āĻ¨āĻŽā§āĻŦāĻ°" āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨: CallMeOut āĻāĻŦāĻ "āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨" āĻ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨
āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
Asterisk āĻāĻŦāĻ Bitrix24 āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻĢāĻ˛ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŽāĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻ˛āĻŽā§ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ manager.conf:
[callme]
secret = JD3clEB8_f23r-3ry84gJ
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
permit= 10.100.111.249/255.255.255.255
permit = 192.168.254.0/255.255.255.0
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,log,verbose,user,config,command,reporting,originate
āĻāĻ°āĻĒāĻ°ā§, āĻŦā§āĻļ āĻāĻŋāĻā§ āĻā§āĻļāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻšāĻ˛ extensions.ael)āĨ¤
āĻāĻŽāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦ, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻĻā§āĻŦ:
globals {
WAV=/var/www/pbx.vistep.ru/callme/records/wav; //ĐŅĐĩĐŧĐĩĐŊĐŊŅĐš ĐēĐ°ŅĐ°ĐģĐžĐŗ Ņ WAV
MP3=/var/www/pbx.vistep.ru/callme/records/mp3; //ĐŅĐ´Đ° вŅĐŗŅŅĐļĐ°ŅŅ mp3 ŅĐ°ĐšĐģŅ
URLRECORDS=https://pbx.vistep.ru/callme/records/mp3;
RECORDING=1; // ĐĐ°ĐŋиŅŅ, 1 - вĐēĐģŅŅĐĩĐŊĐ°.
};
macro recording(calling,called) {
if ("${RECORDING}" = "1"){
Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called});
Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)});
System(mkdir -p ${MP3}/${datedir});
System(mkdir -p ${WAV}/${datedir});
Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${WAV}/${datedir}/${fname}.wav" "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3");
Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3);
Set(CDR(filename)=${fname}.mp3);
Set(CDR(recordingfile)=${fname}.wav);
Set(CDR(realdst)=${called});
MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt});
};
};
context incoming {
888999 => {
&recording(${CALLERID(number)},${EXTEN});
Answer();
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // вŅŅŅавĐģŅĐĩĐŧ CallerID ĐĩŅĐģи ŅСĐŊĐ°Đģи ĐĩĐŗĐž Ņ ĐиŅŅиĐēŅ24
Set(CallStart=${STRFTIME(epoch,,%s)});
Queue(Q1,tT);
Set(CallMeDISPOSITION=${CDR(disposition)});
Hangup();
}
h => {
Set(CDR_PROP(disable)=true);
Set(CallStop=${STRFTIME(epoch,,%s)});
Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===));
}
}
context default {
_X. => {
Hangup();
}
};
context dial_out {
_[1237]XX => {
&recording(${CALLERID(number)},${EXTEN});
Set(__CallIntNum=${CALLERID(num)})
Set(CallStart=${STRFTIME(epoch,,%s)});
Dial(SIP/${EXTEN},,tTr);
Hangup();
}
_11XXX => {
&recording(${CALLERID(number)},${EXTEN});
Set(CallStart=${STRFTIME(epoch,,%s)});
Set(__CallIntNum=${CALLERID(num)});
Dial(SIP/${EXTEN:2}@toOurAster,,t);
Hangup();
}
_. => {
&recording(${CALLERID(number)},${EXTEN});
Set(__CallIntNum=${CALLERID(num)})
Set(CallStart=${STRFTIME(epoch,,%s)});
Dial(SIP/${EXTEN}@toOurAster,,t);
Hangup();
}
h => {
Set(CDR_PROP(disable)=true);
Set(CallStop=${STRFTIME(epoch,,%s)});
Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
if(${ISNULL(${CallMeDISPOSITION})}) {
Set(CallMeDISPOSITION=${CDR(disposition)});
}
System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}
};
āĻļā§āĻ°ā§ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ: āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻā§āĻ˛ā§āĻŦāĻžāĻ˛.
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ URLRECORDS āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ URL āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§, āĻ¯āĻž āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ Bitrix24 āĻ¤āĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻāĻŋāĻ¤āĻŋ āĻāĻžāĻ°ā§āĻĄā§ āĻāĻžāĻ¨āĻŦā§āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻāĻā§āĻ°āĻšā§ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ.
āĻāĻāĻžāĻ¨ā§, āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻžāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻŦ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻžāĻŽ.
Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3);
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ URL āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§ (āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§āĻā§ āĻ¸āĻ°ā§āĻŦāĻ¤ā§āĻ° āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ)āĨ¤
āĻāĻ¸ā§āĻ¨ āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻāĻ˛ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻž āĻ¯āĻžāĻ:
_. => {
&recording(${CALLERID(number)},${EXTEN});
Set(__CallIntNum=${CALLERID(num)})
Set(CallStart=${STRFTIME(epoch,,%s)});
Dial(SIP/${EXTEN}@toOurAster,,t);
Hangup();
}
h => {
Set(CDR_PROP(disable)=true);
Set(CallStop=${STRFTIME(epoch,,%s)});
Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
if(${ISNULL(${CallMeDISPOSITION})}) {
Set(CallMeDISPOSITION=${CDR(disposition)});
}
System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻ°āĻž 89991234567 āĻāĻ˛ āĻāĻ°āĻŋ, āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻĒāĻžāĻ:
&recording(${CALLERID(number)},${EXTEN});
āĻ¸ā§āĻā§āĻ˛ā§. āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ āĻ§āĻŋāĻāĻ¤āĻ°
Set(__CallIntNum=${CALLERID(num)})
Set(CallStart=${STRFTIME(epoch,,%s)});
āĻāĻŽāĻ°āĻž āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻŋ āĻā§ āĻāĻ˛āĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻā§ āĻāĻŦāĻ āĻāĻ˛ āĻļā§āĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻŋāĨ¤
āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻĒāĻ°ā§, āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻĒā§āĻ°āĻ¸āĻā§āĻā§ h
h => {
Set(CDR_PROP(disable)=true);
Set(CallStop=${STRFTIME(epoch,,%s)});
Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
if(${ISNULL(${CallMeDISPOSITION})}) {
Set(CallMeDISPOSITION=${CDR(disposition)});
}
System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}
āĻāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻĄāĻŋāĻāĻ° āĻā§āĻŦāĻŋāĻ˛ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻ āĻā§āĻˇāĻŽ āĻāĻ°ā§āĻ¨ (āĻāĻāĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ), āĻāĻ˛ā§āĻ° āĻļā§āĻˇ āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨, āĻ¸āĻŽāĻ¯āĻŧāĻāĻžāĻ˛ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨, āĻ¯āĻĻāĻŋ āĻāĻ˛ā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻžāĻ¨āĻž āĻ¨āĻž āĻĨāĻžāĻā§ - āĻ¸ā§āĻ (āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ CallMeDISPOSITION) āĻāĻŦāĻ, āĻļā§āĻˇ āĻ§āĻžāĻĒā§, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻžāĻ°ā§āĻ˛ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻŦāĻŋāĻā§āĻ°āĻŋāĻā§āĻ¸ā§ āĻĒāĻžāĻ āĻžāĻ¨āĨ¤
āĻāĻŦāĻ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻ¯āĻžāĻĻā§ - āĻāĻāĻāĻŋ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ˛:
888999 => {
&recording(${CALLERID(number)},${EXTEN});
Answer();
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // вŅŅŅавĐģŅĐĩĐŧ CallerID ĐĩŅĐģи ŅСĐŊĐ°Đģи ĐĩĐŗĐž Ņ ĐиŅŅиĐēŅ24
Set(CallStart=${STRFTIME(epoch,,%s)}); // ĐŊĐ°ŅиĐŊĐ°ĐĩĐŧ ĐžŅŅŅĐĩŅ вŅĐĩĐŧĐĩĐŊи СвОĐŊĐēĐ°
Queue(Q1,tT);
Set(CallMeDISPOSITION=${CDR(disposition)});
Hangup();
}
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻāĻā§āĻ°āĻšā§.
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp());
āĻ¸ā§ āĻĒāĻŋāĻŦāĻŋāĻāĻā§āĻ¸āĻā§ āĻāĻ¨ā§āĻ¸āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛ā§ CallerID(āĻ¨āĻžāĻŽ) āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ā§āĻ° āĻ¸āĻŽāĻžāĻ¨ CallMeCallerIDName.
CallMeCallerIDName āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¨āĻŋāĻā§āĻ CallMe āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻ¯āĻĻāĻŋ Bitrix24-āĻāĻ° āĻāĻ˛āĻžāĻ°ā§āĻ° āĻ¨āĻŽā§āĻŦāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻžāĻŽ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨ CallerID(āĻ¨āĻžāĻŽ), āĻ¨āĻž - āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§āĻ āĻāĻ°āĻŦ āĻ¨āĻž)āĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻāĻāĻĒ
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĢāĻžāĻāĻ˛ - /var/www/pbx.vistep.ru/config.php
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž:
- āĻāĻ˛MeDEBUG â āĻ¯āĻĻāĻŋ 1, āĻ¤āĻžāĻšāĻ˛ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻā§āĻ¨ā§āĻ āĻ˛āĻ āĻĢāĻžāĻāĻ˛ā§ āĻ˛ā§āĻāĻž āĻšāĻŦā§, 0 â āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§ āĻ˛āĻŋāĻāĻŋ āĻ¨āĻž
- āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ - SIP/PJSIP/IAX/āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ
- authToken â Bitrix24 āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻā§āĻā§āĻ¨, āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻā§āĻĄ
- bitrixApiUrl â āĻāĻāĻ¤ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻā§āĻ° URL, āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ āĻāĻžāĻĄāĻŧāĻž/
- āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ - āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž
- āĻĒā§āĻ°āĻ¸āĻā§āĻ - āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ° āĻāĻĻā§āĻāĻŦā§āĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻ
- āĻļā§āĻ°ā§āĻ¤āĻž_āĻ¸āĻŽāĻ¯āĻŧ āĻļā§āĻˇ â āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĨā§āĻā§ āĻāĻā§āĻ¨ā§āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¤āĻŋ
- āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ â āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§:
- āĻ¨āĻŋāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻāĻ°ā§āĻ¤āĻž â āĻāĻāĻĒāĻŋ āĻŦāĻž āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻšā§āĻ¸ā§āĻāĻ¨āĻžāĻŽ
- āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž â āĻ¸āĻāĻ¯ā§āĻ āĻāĻŋāĻ¤ā§āĻ° (tcp://, tls://)
- āĻŦāĻ¨ā§āĻĻāĻ° - āĻŦāĻ¨ā§āĻĻāĻ°
- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ - āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ
- āĻā§āĻĒāĻ¨ - āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ
- āĻ¸āĻāĻ¯ā§āĻ_āĻ¸āĻŽāĻ¯āĻŧ āĻļā§āĻˇ - āĻāĻāĻ āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ
- read_timeout - āĻāĻžāĻāĻŽāĻāĻāĻ āĻĒāĻĄāĻŧā§āĻ¨
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĢāĻžāĻāĻ˛:
<?php
return array(
'CallMeDEBUG' => 1, // Đ´ĐĩйаĐŗ ŅООйŅĐĩĐŊиŅ в ĐģĐžĐŗĐĩ: 1 - ĐŋиŅĐĩĐŧ, 0 - ĐŊĐĩ ĐŋиŅĐĩĐŧ
'tech' => 'SIP',
'authToken' => 'xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6', //ŅĐžĐēĐĩĐŊ авŅĐžŅиСаŅии йиŅŅиĐēŅĐ°
'bitrixApiUrl' => 'https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/', //url Đē api йиŅŅиĐēŅĐ° (вŅ
ОдŅŅиК вĐĩĐąŅ
ŅĐē)
'extentions' => array('888999'), // ŅĐŋиŅĐžĐē вĐŊĐĩŅĐŊиŅ
ĐŊĐžĐŧĐĩŅОв, ŅĐĩŅĐĩС СаĐŋŅŅŅŅ
'context' => 'dial_out', //иŅŅ
ОдŅŅиК ĐēĐžĐŊŅĐĩĐēŅŅ Đ´ĐģŅ ĐžŅиĐŗиĐŊĐ°Ņии СвОĐŊĐēĐ°
'asterisk' => array( // ĐŊĐ°ŅŅŅОКĐēи Đ´ĐģŅ ĐŋОдĐēĐģŅŅĐĩĐŊиŅ Đē Đ°ŅŅĐĩŅиŅĐēŅ
'host' => '10.100.111.249',
'scheme' => 'tcp://',
'port' => 5038,
'username' => 'callme',
'secret' => 'JD3clEB8_f23r-3ry84gJ',
'connect_timeout' => 10000,
'read_timeout' => 10000
),
'listener_timeout' => 300, //ŅĐēĐžŅĐžŅŅŅ ОйŅайОŅĐēи ŅОйŅŅиК ĐžŅ asterisk
);
āĻ¸ā§āĻĒāĻžāĻ°āĻāĻžāĻāĻāĻžāĻ° āĻ¸ā§āĻāĻāĻĒ
āĻ¸ā§āĻĒāĻžāĻ°āĻāĻžāĻāĻāĻžāĻ° Asterisk CallMeIn.php āĻĨā§āĻā§ āĻāĻā§āĻ¨ā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ Bitrix24 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°ā§ (āĻāĻžāĻ°ā§āĻĄ āĻĻā§āĻāĻžāĻ¨, āĻāĻžāĻ°ā§āĻĄ āĻ˛ā§āĻāĻžāĻ¨, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤
āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
/etc/supervisord.d/callme.conf
[program:callme]
command=/usr/bin/php CallMeIn.php
directory=/var/www/pbx.vistep.ru
autostart=true
autorestart=true
startretries=5
stderr_logfile=/var/www/pbx.vistep.ru/logs/daemon.log
stdout_logfile=/var/www/pbx.vistep.ru/logs/daemon.log
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨:
supervisorctl start callme
supervisorctl restart callme
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĻā§āĻāĻž āĻšāĻā§āĻā§:
supervisorctl status callme
callme RUNNING pid 11729, uptime 17 days, 16:58:07
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻāĻŋ āĻŦā§āĻļ āĻāĻāĻŋāĻ˛ āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻāĻŽāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻāĻāĻ¨ āĻ āĻāĻŋāĻā§āĻ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻā§āĻļāĻŋ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦā§āĻ¨āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤,
āĻĒā§āĻ°āĻļā§āĻ¨, āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ - āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻĄāĻŧā§ āĻĻāĻŋāĻ¨. āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻāĻā§āĻāĻ°āĻŖā§āĻ° āĻŦāĻŋāĻāĻžāĻļ āĻā§āĻāĻžāĻŦā§ āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¨ āĻ¤āĻŦā§ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com