เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚
เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ IP-PBX เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, CRM Bitrix24 เดŽเดจเตเดจเดฟเดต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดค เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดŽเดดเตเดคเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต.

เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด†เดฃเต:

  • Bitrix24-เดฒเต† เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเดฟเตปเดฑเต† เดซเต‹เตบ เดจเดฎเตเดชเดฑเตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เดจเดฎเตเดชเดฑเดฟเดจเต† เด•เตเดฒเดฏเดจเตเดฑเต เดซเต‹เตบ เดจเดฎเตเดชเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. Bitrix24-เตฝ, เด•เต‹เดณเดฟเดจเตเดฑเต† เด’เดฐเต เดฑเต†เด•เตเด•เต‹เตผเดกเต เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚, เด•เต‹เดณเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚, เดธเด‚เดญเดพเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เด‰เดฏเตผเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  • Asterisk-เดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เต‹เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต - Bitrix24 เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เดžเด™เตเด™เตพ เด•เตเดฒเดฏเดจเตเดฑเต เด•เดพเตผเดกเต เด†เดฐเตเดŸเต† เดจเดฎเตเดชเดฑเดฟเดฒเต‡เด•เตเด•เต เดˆ เด•เต‹เตพ เดตเดจเตเดจ เดœเต€เดตเดจเด•เตเด•เดพเดฐเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.
    เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด•เตเดฒเดฏเดจเตเดฑเต เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เดชเตเดคเดฟเดฏ เดฒเต€เดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เดพเตผเดกเต เดžเด™เตเด™เตพ เดคเตเดฑเด•เตเด•เตเด‚.
    เด•เต‹เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏ เด‰เดŸเตป, เดžเด™เตเด™เตพ เด‡เดคเต เด•เดพเตผเดกเดฟเตฝ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเด‚เดญเดพเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดŽเดฒเตเดฒเดพเด‚ เดŽเด™เตเด™เดจเต† เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด—เดฟเดคเตเดคเดฌเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เต เดจเตฝเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด•เดŸเตเดŸเดฟเดจเต เดคเดพเดดเต† เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚ - เด…เดคเต†, เด…เดคเต†, เด…เดคเต เดŽเดŸเตเดคเตเดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•!

เดชเตŠเดคเตเดตเดพเดฏ เดตเดฟเดตเดฐเดฃเด‚

เดžเด™เตเด™เดณเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต† เดžเด™เตเด™เตพ CallMe เดŽเดจเตเดจเต เดตเดฟเดณเดฟเดšเตเดšเต. PHP-เดฏเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต CallMe.

เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เดณเตเด‚ เดธเต‡เดตเดจเด™เตเด™เดณเตเด‚

  • PHP 5.6
  • PHP AMI เดฒเตˆเดฌเตเดฐเดฑเดฟ
  • เด•เดฎเตเดชเต‡เดพเดธเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดฏเดพเตพ
  • Nginx + php-fpm
  • เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ
  • AMI (เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต เดฎเดพเดจเต‡เดœเตผ เด‡เดจเตเดฑเตผเดซเต‡เดธเต)
  • Bitrix webhooks (เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏ REST API เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ)

เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต เด‰เดณเตเดณ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเตฝ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดตเต†เดฌเต เดธเต†เตผเดตเตผ (เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต nginx+php-fpm เด†เดฃเต), เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ, เดœเดฟเดฑเตเดฑเต เดŽเดจเตเดจเดฟเดต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เด•เดฎเดพเตปเดกเต (CentOS):

yum install nginx php-fpm supervisor git

เดžเด™เตเด™เตพ เดตเต†เดฌเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ, 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 เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฎเตเด•เตเด•เต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚.

เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดšเต†เดฏเตเดคเตเดตเต†เด™เตเด•เดฟเตฝ, เดฒเดฟเด™เตเด•เดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด‡เดคเตเดชเต‹เดฒเตŠเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

Bitrix24 เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เดตเต†เดฌเตเดนเต‚เด•เตเด•เตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚.

เด‡เตปเด•เดฎเดฟเด‚เด—เต เดตเต†เดฌเตเดนเตเด•เตเด•เต.

เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดจเต เด•เต€เดดเดฟเตฝ (เดเดกเดฟ 1 เด‰เดณเตเดณเดคเต), เดชเดพเดค เดชเดฟเดจเตเดคเตเดŸเดฐเตเด•: เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ -> เดตเต†เดฌเตโ€Œเดนเต‚เด•เตเด•เตเด•เตพ -> เดตเต†เดฌเตโ€Œเดนเตเด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด• -> เด‡เตปเด•เดฎเดฟเด‚เด—เต เดตเต†เดฌเตโ€Œเดนเตเด•เตเด•เต

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเตเด•เดณเดฟเดฒเต‡เดคเตเดชเต‹เดฒเต† เด‡เตปเด•เดฎเดฟเด‚เด—เต เดตเต†เดฌเตเดนเตเด•เตเด•เดฟเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด’เดชเตเดชเด‚ เดธเต‡เดตเต เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•.

เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เด‡เตปเด•เดฎเดฟเด‚เด—เต เดตเต†เดฌเตโ€Œเดนเตเด•เตเด•เดฟเดจเตเดฑเต† URL Bitrix24 เดจเตฝเด•เตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด…เดจเตเดคเดฟเดฎ /เดชเตเดฐเตŠเดซเตˆเตฝ/ เด‡เดฒเตเดฒเดพเดคเต† URL-เดจเตเดฑเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเดคเดฟเดชเตเดชเต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด• - เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เต‹เดณเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด‡เดคเต เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดŽเดจเดฟเด•เตเด•เต เด‡เดคเต เด‰เดฃเตเดŸเต https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/

เด”เดŸเตเดŸเตเด—เต‹เดฏเดฟเด‚เด—เต เดตเต†เดฌเตเดนเตเด•เตเด•เต.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ -> Webhooks -> webhook เดšเต‡เตผเด•เตเด•เตเด• -> Outgoing webhook

เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเตเด•เดณเดฟเตฝ เด‰เดฃเตเดŸเต:

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เด…เด‚เด—เต€เด•เตƒเดค เด•เต‹เดกเต เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เดŽเดจเดฟเด•เตเด•เต เด‡เดคเต เด‰เดฃเตเดŸเต xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. เดจเดฟเด™เตเด™เตพ เด…เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดชเด•เตผเดคเตเดคเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚; เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เด•เต‹เดณเตเด•เตพ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸเดคเต!

เด’เดฐเต SSL เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต Bitrix24 เดธเต†เตผเดตเดฑเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เดฃเด‚ (เดจเดฟเด™เตเด™เตพเด•เตเด•เต letsencrypt เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚), เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Bitrix api เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เตเดฒเต—เดกเต เดชเดคเดฟเดชเตเดชเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸ - เด‡เดคเดฟเดจเต เด‡เดคเดฟเดจเด•เด‚ ssl เด‰เดฃเตเดŸเต.

เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸเดคเต!

"เดชเตเดฐเต‹เดธเดธเตผ เดตเดฟเดฒเดพเดธเด‚" เดซเต€เตฝเดกเดฟเตฝ เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เด’เดฐเต เดตเดฟเดฒเดพเดธเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚!

เด…เดตเดธเดพเดจ เดธเตเดชเตผเดถเดฎเต†เดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เด•เต‹เดณเตเด•เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต CallMeOut เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚ (เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ PBX-เดฒเต† เดจเดฎเตเดชเดฑเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด•เต‹เตพ เด‰เดคเตเดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเต เดชเดฑเดจเตเดจเตเดชเต‹เด•เตเด‚).

เดฎเต†เดจเตเดตเดฟเตฝ, เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•: เด•เต‚เดŸเตเดคเตฝ -> เดŸเต†เดฒเดฟเดซเต‹เดฃเดฟ -> เด•เต‚เดŸเตเดคเตฝ -> เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ, "เดกเต€เดซเต‹เตพเดŸเตเดŸเต เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เด•เต‹เตพ เดจเดฎเตเดชเตผ" เดŽเดจเตเดจเดคเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป: CallMeOut เดคเตเดŸเตผเดจเตเดจเต "เดธเต‡เดตเต" เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•

เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต, เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเต 24 เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚

เดจเด•เตเดทเดคเตเดฐเดšเดฟเดนเตเดจเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

Asterisk เด‰เด‚ Bitrix24 เด‰เด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด‡เดŸเดชเต†เดŸเดฒเดฟเดจเต, Manager.conf เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ AMI เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† callme เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

[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

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, dialplan เดตเดดเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸ เดจเดฟเดฐเดตเดงเดฟ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเดฃเตเดŸเต (เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต 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});
}

};

เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚: เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เด—เตเดฒเต‹เดฌเดฒเตเด•เตพ.

เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ URLเดฐเต‡เด–เด•เตพ เดธเด‚เดญเดพเดทเดฃ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต 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});
}

เดˆ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ CDR เดŸเต‡เดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเตเดฐเดตเต‡เดถเดจเด‚ เด…เดชเตเดฐเดพเดชเตเดคเดฎเดพเด•เตเด•เตเด• (เด…เดคเต เด…เดตเดฟเดŸเต† เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ), เด•เต‹เดณเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจ เดธเดฎเดฏเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•, เด•เต‹เดณเดฟเดจเตเดฑเต† เดซเดฒเด‚ เด…เดฑเดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฆเตˆเตผเด˜เตเดฏเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด• - เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• (เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด•เต‹เตพเดฎเต†เดกเดฟเดธเตเดชเต‹เดธเดฟเดทเตป) เด•เต‚เดŸเดพเดคเต†, เด…เดตเดธเดพเดจ เด˜เดŸเตเดŸเด‚, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดšเตเดฐเตเดณเดฟเดฒเต‚เดŸเต† เดŽเดฒเตเดฒเดพเด‚ เดฌเดฟเดŸเตเดฐเดฟเด•เตเดธเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเด•.

เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฎเดพเดœเดฟเด•เต - เด’เดฐเต เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เต‹เตพ:

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());

เด…เดตเตพ PBX-เดจเต‹เดŸเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดชเดฑเดฏเตเดจเตเดจเต เด•เต‹เดณเตผ เดเดกเดฟ(เดชเต‡เดฐเต) เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเตเดฒเตเดฏเด‚ CallMeCallerIDName.

CallMeCallerIDName เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดคเดจเตเดจเต†, CallMe เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดดเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด•เต‹เดณเดฑเตเดŸเต† เดจเดฎเตเดชเดฑเดฟเดจเต Bitrix24-เดจเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเต‡เดฐเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด‡เดคเดพเดฏเดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• เด•เต‹เดณเตผ เดเดกเดฟ(เดชเต‡เดฐเต), เด‡เดฒเตเดฒ - เดžเด™เตเด™เตพ เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ).

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃ เดซเดฏเตฝ - /var/www/pbx.vistep.ru/config.php

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เดตเดฟเดตเดฐเดฃเด‚:

  • CallMeDEBUG - 1 เด†เดฃเต†เด™เตเด•เดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดค เดŽเดฒเตเดฒเดพ เด‡เดตเดจเตเดฑเตเด•เดณเตเด‚ เดฒเต‹เด—เต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดชเตเดชเต†เดŸเตเด‚, 0 - เดžเด™เตเด™เตพ เด’เดจเตเดจเตเด‚ เดŽเดดเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ
  • เดŸเต†เด•เต - SIP/PJSIP/IAX/ etc
  • authToken โ€” Bitrix24 เด…เด‚เด—เต€เด•เดพเดฐ เดŸเต‹เด•เตเด•เตบ, เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เดตเต†เดฌเตโ€Œเดนเตเด•เตเด•เต เด…เด‚เด—เต€เด•เดพเดฐ เด•เต‹เดกเต
  • bitrixApiUrl โ€” เดชเตเดฐเตŠเดซเตˆเตฝ เด‡เดฒเตเดฒเดพเดคเต† เด‡เตปเด•เดฎเดฟเด‚เด—เต เดตเต†เดฌเตเดนเตเด•เตเด•เดฟเดจเตเดฑเต† URL/
  • เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ - เดฌเดพเดนเตเดฏ เดธเด‚เด–เตเดฏเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•
  • เดธเดจเตเดฆเตผเดญเด‚ - เด’เดฐเต เด•เต‹เตพ เด‰เดคเตเดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดจเตเดฆเตผเดญเด‚
  • เดฒเดฟเดธเดฃเตผ_เดŸเตˆเดฎเต—เดŸเตเดŸเต - เดจเด•เตเดทเดคเตเดฐเดšเดฟเดนเตเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‡เดตเดจเตเดฑเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เดฟเดจเตเดฑเต† เดตเต‡เด—เดค
  • เดจเด•เตเดทเดคเตเดฐเดšเดฟเดนเตเดจเด‚ โ€” เดจเด•เตเดทเดคเตเดฐเดšเดฟเดนเตเดจเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เด…เดฑเต‡:
  • เดนเต‡เดพเดธเตเดฑเตเดฑเต โ€” ip เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด†เดธเตเดฑเตเดฑเดฑเดฟเดธเตเด•เต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดนเต‹เดธเตเดฑเตเดฑเตเดจเดพเดฎเด‚
  • เดธเตเด•เต€เด‚ - เด•เดฃเด•เตเดทเตป เดกเดฏเด—เตเดฐเด‚ (tcp://, tls://)
  • เดคเตเดฑเดฎเตเด–เด‚ - เดคเตเดฑเดฎเตเด–เด‚
  • เด‰เดชเดฏเต‡เดพเด•เตเดคเตƒเดจเดพเดฎเด‚ - เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚
  • เดฐเดนเดธเตเดฏ - password
  • connect_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

);

เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ เดธเดœเตเดœเต€เด•เดฐเดฃเด‚

เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เต‹เดณเตเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ Bitrix24 (เด•เดพเตผเดกเต เด•เดพเดฃเดฟเด•เตเด•เตเด•, เด•เดพเตผเดกเต เดฎเดฑเดฏเตเด•เตเด•เตเด• เดฎเตเดคเดฒเดพเดฏเดต) เดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ Asterisk CallMeIn.php-เตฝ เดจเดฟเดจเตเดจเต เด‡เดตเดจเตเดฑเต เดนเดพเตปเดกเตโ€Œเดฒเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸ เด•เตเดฐเดฎเต€เด•เดฐเดฃ เดซเดฏเตฝ:

/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

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด‡เดคเต เดตเดณเดฐเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ, เดชเด•เตเดทเต‡ เดชเดฐเดฟเดšเดฏเดธเดฎเตเดชเดจเตเดจเดจเดพเดฏ เด’เดฐเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผเด•เตเด•เต เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เด…เดตเดจเตเดฑเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เดชเตเดฐเต€เดคเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต.

เดตเดพเด—เตเดฆเดพเดจเดชเตเดฐเด•เดพเดฐเด‚, github-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เต.

เดšเต‹เดฆเตเดฏเด™เตเด™เตพ, เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ - เดฆเดฏเดตเดพเดฏเดฟ เด…เดต เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เด‡เดŸเตเด•. เด•เต‚เดŸเดพเดคเต†, เดˆ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเด•เดธเดจเด‚ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดจเดŸเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดŽเดดเตเดคเตเด•, เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดŽเดฒเตเดฒเดพเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•