د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

Bitrix24 یو لوی ترکیب دی چې د CRM، کاري فلو، محاسبې او ډیری نور شیان سره یوځای کوي چې مدیران واقعیا خوښوي او د معلوماتي ټکنالوجۍ کارمندان واقعیا نه خوښوي. پورټل د ډیری کوچني او متوسط ​​​​شرکتونو لخوا کارول کیږي ، پشمول کوچني کلینیکونه ، تولید کونکي او حتی د ښکلا سیلونونه. اصلي دنده چې مدیران "مینه" د تلیفون او CRM ادغام دی ، کله چې کوم زنګ سمدلاسه په CRM کې ثبت شي ، د پیرودونکي کارتونه رامینځته کیږي ، کله چې راځي ، د پیرودونکي په اړه معلومات څرګندیږي او تاسو سمدلاسه لیدلی شئ چې هغه څوک دی ، څه شی دی. کولی شي وپلوري او څومره پور لري. مګر د Bitrix24 څخه تلیفون او د CRM سره د هغې ادغام پیسې مصرفوي، ځینې وختونه ډیر. په مقاله کې به زه تاسو ته د خلاص وسیلو او مشهور IP PBX سره د ادغام تجربه ووایم فري پي بي ایکساو همدارنګه د مختلفو برخو د کار منطق په پام کې ونیسئ

زه په یوه شرکت کې د بهرنی سرچینې په توګه کار کوم چې پلوري او تنظیموي، IP ټیلفوني مدغم کوي. کله چې له ما څخه وپوښتل شول چې ایا موږ کولی شو دې او دې شرکت ته یو څه وړاندیز وکړو ترڅو د PBXs سره Bitrix24 مدغم کړو چې پیرودونکي یې لري ، په بیله بیا په مختلف VDS شرکتونو کې د مجازی PBXs سره ، زه ګوګل ته لاړم. او البته هغه ماته یو لینک راکړ په habr کې مقاله، چیرې چې توضیحات شتون لري ، او ګیتوب ، او هرڅه داسې بریښي چې کار کوي. مګر کله چې د دې حل کارولو هڅه کول، دا معلومه شوه چې Bitrix24 نور د پخوا په څیر نه دی، او ډیر څه باید بیا ترسره شي. سربیره پردې ، FreePBX ستاسو لپاره خلاص ستوری ندی ، دلته تاسو اړتیا لرئ د دې په اړه فکر وکړئ چې څنګه د کارولو اسانتیا او په ترتیب فایلونو کې هارډ کور ډیلپلان یوځای کړئ.

موږ د کار منطق مطالعه کوو

نو د پیل کونکو لپاره ، دا باید څنګه کار وکړي. کله چې په PBX کې له بهر څخه تلیفون ترلاسه شي (د چمتو کونکي څخه د SIP INVITE پیښه) ، د ډیلپلان پروسس کول (ډایل پلان ، ډایلپلان) پیل کیږي - د زنګ سره د څه لپاره او په کوم ترتیب کې مقررات. د لومړۍ کڅوړې څخه، تاسو کولی شئ ډیر معلومات ترلاسه کړئ، کوم چې بیا په قواعدو کې کارول کیدی شي. د SIP داخلي مطالعې لپاره غوره وسیله تحلیل کونکی دی sngrep (لینک) کوم چې په ساده ډول د apt install/yum install او ورته نورو له لارې په مشهور توزیع کې نصب شوی ، مګر دا د سرچینې څخه هم رامینځته کیدی شي. راځئ چې د کال log in sngrep وګورو

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

په ساده بڼه کې، ډایلپلان یوازې د لومړي کڅوړې سره معامله کوي، ځینې وختونه د خبرو اترو په جریان کې، تلیفونونه لیږدول کیږي، د تڼۍ فشار (DTMF)، مختلف په زړه پوري شیان لکه FollowMe، RingGroup، IVR او نور.

د بلنې کڅوړې دننه څه دي

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

په حقیقت کې، ډیری ساده ډیلپلان د لومړي دوه برخو سره کار کوي، او ټول منطق د DID او CallerID شاوخوا ګرځي. DID - چیرته چې موږ زنګ وهو، CallerID - څوک چې زنګ وهي.

مګر په هرصورت ، موږ یو شرکت لرو نه یو تلیفون - پدې معنی چې PBX ډیری احتمال د کال ګروپونه لري (د څو وسیلو په ورته وخت کې / پرله پسې زنګ وهل) د ښار په شمیرو (رینګ ګروپ) ، IVR (سلام ، تاسو تلیفون کړی ... پریس یو لپاره ...)، د ځواب ورکولو ماشینونه (جملې)، د وخت شرایط، نورو شمیرو ته لیږل یا سیل ته (FollowMe، Forward). دا پدې مانا ده چې دا خورا ستونزمن کار دی چې په واضح ډول معلومه کړي چې څوک به واقعیا تلیفون ترلاسه کړي او د چا سره به خبرې وکړي کله چې تلیفون راشي. دلته زموږ د پیرودونکو په PBX کې د عادي تلیفون پیل یوه بیلګه ده

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

وروسته له دې چې زنګ په بریالیتوب سره PBX ته ننوځي، دا په مختلفو "ماقصو" کې د ډیلپلان له لارې سفر کوي. د Asterisk له نظره شرایط د کمانډونو شمیره ده، چې هر یو یې د ډیل شوي شمیرې په واسطه فلټر لري (دا د exten په نوم یادیږي، په ابتدايي مرحله کې د بهرني تلیفون لپاره exten=DID). د ډیلپلان لاین کې کمانډونه هر څه کیدی شي - داخلي دندې (د مثال په توګه ، داخلي پیرودونکي ته زنګ ووهئ - Dial()ټلیفون یې ښکته کړ – Hangup()مشروط چلونکي (IF, ELSE, ExecIF او ورته ورته)، د دې شرایطو نورو قواعدو ته لیږد (Goto, GotoIF)، د فنکشن کال (ګوسوب، میکرو) په بڼه نورو شرایطو ته لیږد. یو جلا لارښود include имя_контекста, کوم چې د اوسني شرایطو پای ته د بل شرایطو څخه کمانډونه اضافه کوي. د شاملولو له لارې شامل شوي قوماندې تل اجرا کیږي после د اوسني شرایطو حکمونه.

د FreePBX ټول منطق د Gosub، Macro او Handler Handlers له لارې د شامل او زنګ له لارې یو بل ته د مختلف شرایطو شاملولو باندې رامینځته شوی. د راتلونکو FreePBX تلیفونونو شرایطو ته پام وکړئ

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

زنګ له پورته څخه تر ښکته پورې په ټولو شرایطو کې تیریږي ، په هر شرایطو کې نورو شرایطو ته زنګ وهل کیدی شي لکه میکرو (ماکرو) ، فنکشن (ګوسوب) یا یوازې لیږد (ګوټو) ، نو د هغه څه اصلي ونه یوازې کولی شي چې ورته ویل کیږي. په لاګونو کې تعقیب شي.

د یو عادي PBX لپاره یو عادي ترتیب ډیاګرام لاندې ښودل شوی. کله چې زنګ وهل کیږي، DID په راتلونکو لارو کې پلټل کیږي، لنډمهاله شرایط د دې لپاره چک کیږي، که هرڅه سم وي، د غږ مینو پیل کیږي. له دې څخه، د 1 تڼۍ په فشارولو سره یا د وخت پای ته رسیدو سره، د ډیلینګ آپریټرانو ګروپ ته وګرځئ. د زنګ پای ته رسیدو وروسته، د هینګ اپ کال میکرو ته ویل کیږي، وروسته له دې چې په ډایلپلان کې هیڅ شی نشي ترسره کیدی، پرته له ځانګړي هینډلر (هنګ اپ هینډلر).

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

په دې زنګ الګوریتم کې چیرته باید موږ CRM ته د زنګ د پیل په اړه معلومات وړاندې کړو، چیرته چې ثبت کول پیل کړو، چیرته چې ریکارډ پای ته ورسوو او CRM ته د زنګ په اړه معلومات سره ولیږو؟

د بهرنیو سیسټمونو سره یوځای کول

د PBX او CRM ادغام څه شی دی؟ دا تنظیمات او برنامې دي چې د دې دوه پلیټ فارمونو ترمینځ ډیټا او پیښې بدلوي او یو بل ته یې لیږي. د خبرو اترو لپاره د خپلواک سیسټمونو ترټولو عام لاره د APIs له لارې ده، او APIs ته د لاسرسي ترټولو مشهوره لاره HTTP REST ده. مګر د ستوری لپاره نه.

د ستوری دننه دا دی:

  • AGI - د بهرني برنامو / اجزاو ترکیب کال چې په عمده ډول په ډیلپلان کې کارول کیږي ، دلته کتابتونونه شتون لري phpagi, PAGI

  • AMI - د متن TCP ساکټ چې پیښو ته د ګډون کولو او د متن کمانډونو ته د ننوتلو په اصولو کار کوي، له دننه څخه SMTP ته ورته دی، کولی شي پیښې تعقیب کړي او تلیفونونه اداره کړي، یو کتابتون شتون لري. PAMI - د Asterisk سره د اړیکې رامینځته کولو لپاره خورا مشهور

د AMI محصول مثال

پیښه: نوی چینل
استحقاق: زنګ، ټول
چینل: PJSIP/VMS_pjsip-0000078b
د چینل حالت: 4
ChannelStateDesc: حلقه
د زنګ وهونکي ID شمیره: 111222
د زنګ وهونکي ID نوم: 111222
نښلول شوی لاین شمیره:
نښلول شوی لیک نوم:
ژبه: en
د حساب کوډ:
متن: له pstn څخه
پراخول: s
لومړیتوب:.
یونیډیډ: 1599589046.5244
لینکډیډ: 1599589046.5244

  • ARI د دواړو ترکیب دی، ټول د REST، WebSocket له لارې، د JSON بڼه کې - مګر د تازه کتابتونونو او ریپرونو سره، ډیر ښه ندي، په لاس کې موندل شوي (phparia, phpari) چې شاوخوا 3 کاله دمخه د دوی په پراختیا کې رامینځته شو.

د ARI محصول بیلګه کله چې تلیفون پیل شي

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id »:»1599644315.5334″، «نوم»:»PJSIP/VMSpjsip-000007b6″، "ریاست":"رنګ"، "زنګ کوونکی":{ "نوم":"111222″، "نمبر":"111222″ }، "وصل شوی":{ "نوم":"، " شمیره" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appname":"Stasis"، "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"en" }, "asteriskid":"48:5b:aa:aa:aa:aa", "application":"Hello-world" }

اسانتیا یا تکلیف، د یو ځانګړي API سره د کار کولو امکان یا ناممکنیت د هغه دندو لخوا ټاکل کیږي چې حل کولو ته اړتیا لري. د CRM سره د ادغام لپاره دندې په لاندې ډول دي:

  • د زنګ پیل تعقیب کړئ، چیرته چې لیږدول شوی و، د کالر ID، DID، د پیل او پای وختونه وباسئ، شاید د ډایرکټر څخه ډاټا (د تلیفون او CRM کارونکي ترمنځ د ارتباط لټون لپاره)

  • د زنګ ثبت کول پیل او پای ته ورسوئ ، په مطلوب شکل کې یې خوندي کړئ ، د ثبت کولو په پای کې خبر کړئ چیرې چې فایل موقعیت لري

  • په بهرنۍ پیښې (د برنامه څخه) تلیفون پیل کړئ ، داخلي شمیره ، بهرنۍ شمیره زنګ ووهئ او وصل کړئ

  • اختیاري: د ځای په نشتوالي کې د تلیفونونو اتوماتیک لیږد لپاره د CRM ، ډایلر ګروپونو او FollowME سره یوځای کړئ (د CRM په وینا)

دا ټول کارونه د AMI یا ARI له لارې حل کیدی شي، مګر ARI ډیر لږ معلومات وړاندې کوي، ډیری پیښې شتون نلري، ډیری متغیرونه چې AMI لاهم لري (د مثال په توګه، میکرو کال، د میکرو دننه متغیرات ترتیب کول، په شمول د کال ثبت کول) تعقیب شوي ندي. له همدې امله، د سم او دقیق تعقیب لپاره، راځئ چې د اوس لپاره AMI غوره کړئ (مګر په بشپړه توګه نه). برسېره پردې (ښه، له دې پرته به چیرته وي، موږ سست خلک یو) - په اصلي کار کې (په habr کې مقاله) PAMI وکاروئ. *بیا تاسو اړتیا لرئ چې ARI ته د بیا لیکلو هڅه وکړئ، مګر حقیقت نه چې دا به کار وکړي.

د ادغام بیا ایجاد کول

د دې لپاره چې زموږ FreePBX وکولی شي د تلیفون پیل ، پای وخت ، شمیرو ، ثبت شوي فایلونو نومونو په اړه په ساده لارو AMI ته راپور ورکړي ، د اصلي لیکوالانو په څیر ورته چل په کارولو سره د تلیفون موده محاسبه کول خورا اسانه دي. - خپل متغیرونه دننه کړئ او د دوی شتون لپاره محصول تحلیل کړئ. PAMI وړاندیز کوي چې دا په ساده ډول د فلټر فعالیت له لارې ترسره کړئ.

دلته د زنګ د پیل وخت لپاره د خپل متغیر تنظیم کولو یوه بیلګه ده (s په ډیلپلان کې یو ځانګړی شمیره ده چې د DID لټون پیل کولو دمخه ترسره کیږي)

[ext-did-custom]

exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})

د دې کرښې لپاره د AMI پیښې مثال

پیښه: نوی چینل

استحقاق: زنګ، ټول

چینل: PJSIP/VMS_pjsip-0000078b

د چینل حالت: 4

ChannelStateDesc: حلقه

د زنګ وهونکي ID شمیره: 111222

د زنګ وهونکي ID نوم: 111222

نښلول شوی لاین شمیره:

نښلول شوی لیک نوم:

ژبه: en

د حساب کوډ:

متن: له pstn څخه

پراخول: s

لومړیتوب:.

یونیډیډ: 1599589046.5244

لینکډیډ: 1599589046.5244

غوښتنلیک: د AppData ترتیب کړئ:

کال سټارټ=1599571046

ځکه چې FreePBX د extention.conf او extention_ فایلونو باندې لیکيextra.conf، موږ به فایل وکاروو توسیع_د ګمرک.conf

د extention_custom.conf بشپړ کوډ

[globals]	
;; Проверьте пути и права на папки - юзер asterisk должен иметь права на запись
;; Сюда будет писаться разговоры
WAV=/var/www/html/callme/records/wav 
MP3=/var/www/html/callme/records/mp3

;; По этим путям будет воспроизводится и скачиваться запись
URLRECORDS=https://www.host.ru/callmeplus/records/mp3

;; Адрес для калбека при исходящем вызове
URLPHP=https://www.host.ru/callmeplus

;; Да пишем разговоры
RECORDING=1

;; Это макрос для записи разговоров в нашу папку. 
;; Можно использовать и системную запись, но пока пусть будет эта - 
;; она работает
[recording]
exten => ~~s~~,1,Set(LOCAL(calling)=${ARG1})
exten => ~~s~~,2,Set(LOCAL(called)=${ARG2})
exten => ~~s~~,3,GotoIf($["${RECORDING}" = "1"]?4:14)
exten => ~~s~~,4,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called})
exten => ~~s~~,5,Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)})
exten => ~~s~~,6,System(mkdir -p ${MP3}/${datedir})
exten => ~~s~~,7,System(mkdir -p ${WAV}/${datedir})
exten => ~~s~~,8,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")
exten => ~~s~~,9,Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3)
exten => ~~s~~,10,Set(CDR(filename)=${fname}.mp3)
exten => ~~s~~,11,Set(CDR(recordingfile)=${fname}.wav)
exten => ~~s~~,12,Set(CDR(realdst)=${called})
exten => ~~s~~,13,MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt})
exten => ~~s~~,14,NoOp(Finish if_recording_1)
exten => ~~s~~,15,Return()


;; Это основной контекст для начала разговора
[ext-did-custom]

;; Это хулиганство, делать это так и здесь, но работает - добавляем к номеру '8'
exten =>  s,1,Set(CALLERID(num)=8${CALLERID(num)})

;; Тут всякие переменные для скрипта
exten =>  s,n,Gosub(recording,~~s~~,1(${CALLERID(number)},${EXTEN}))
exten =>  s,n,ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp())
exten =>  s,n,Set(CallStart=${STRFTIME(epoch,,%s)})
exten =>  s,n,Set(CallMeDISPOSITION=${CDR(disposition)})

;; Самое главное! Обработчик окончания разговора. 
;; Обычные пути обработки конца через (exten=>h,1,чтототут) в FreePBX не работают - Macro(hangupcall,) все портит. 
;; Поэтому вешаем Hangup_Handler на окончание звонка
exten => s,n,Set(CHANNEL(hangup_handler_push)=sub-call-from-cid-ended,s,1(${CALLERID(num)},${EXTEN}))

;; Обработчик окончания входящего вызова
[sub-call-from-cid-ended]

;; Сообщаем о значениях при конце звонка
exten => s,1,Set(CDR_PROP(disable)=true)
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})

;; Статус вызова - Ответ, не ответ...
exten => s,n,Set(CallMeDISPOSITION=${CDR(disposition)})
exten => s,n,Return


;; Обработчик исходящих вызовов - все аналогичено
[outbound-allroutes-custom]

;; Запись
exten => _.,1,Gosub(recording,~~s~~,1(${CALLERID(number)},${EXTEN}))
;; Переменные
exten => _.,n,Set(__CallIntNum=${CALLERID(num)})
exten => _.,n,Set(CallExtNum=${EXTEN})
exten => _.,n,Set(CallStart=${STRFTIME(epoch,,%s)})
exten => _.,n,Set(CallmeCALLID=${SIPCALLID})

;; Вешаем Hangup_Handler на окончание звонка
exten => _.,n,Set(CHANNEL(hangup_handler_push)=sub-call-internal-ended,s,1(${CALLERID(num)},${EXTEN}))

;; Обработчик окончания исходящего вызова
[sub-call-internal-ended]

;; переменные
exten => s,1,Set(CDR_PROP(disable)=true)
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})
exten => s,n,Set(CallMeDISPOSITION=${CDR(disposition)})

;; Вызов скрипта, который сообщит о звонке в CRM - это исходящий, 
;; так что по факту окончания
exten => s,n,System(curl -s ${URLPHP}/CallMeOut.php --data action=sendcall2b24 --data ExtNum=${CallExtNum} --data call_id=${SIPCALLID} --data-urlencode FullFname='${FullFname}' --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition='${CallMeDISPOSITION}')
exten => s,n,Return

د اصلي مقالې د لیکوالانو د اصلي ډایلپلان څخه ځانګړتیا او توپیر -

  • ډیلپلان په .conf بڼه کې، لکه څنګه چې FreePBX غواړي (هو، دا کولی شي .ael، مګر ټولې نسخې نه وي او دا تل اسانه نه وي)

  • د exten=>h له لارې د پای پروسس کولو پرځای، پروسس کول د hangup_handler له لارې معرفي شوي، ځکه چې د FreePBX ډایلپلان یوازې د دې سره کار کاوه

  • فکسډ سکریپټ کال سټینګ، اضافه شوي نرخونه او د بهرني تلیفون شمیره ExtNum

  • پروسس کول د _ custom شرایطو ته لیږدول شوي او تاسو ته اجازه درکوي چې د FreePBX تشکیلاتو ته لمس یا ایډیټ نه کړئ - د [له لارې راتلونکیext-did- custom]، له لارې وتل [outbound-allroutes-custom]

  • شمیرو ته هیڅ پابند نشته - فایل نړیوال دی او یوازې د لارې او سرور سره لینک لپاره تنظیم کولو ته اړتیا لري

د پیل کولو لپاره، تاسو اړتیا لرئ چې په AMI کې د ننوتلو او پټنوم په واسطه سکریپټونه چل کړئ - د دې لپاره، FreePBX یو _custom فایل هم لري

manager_custom.conf فایل

;;  это логин
[callmeplus]
;; это пароль
secret = trampampamturlala
deny = 0.0.0.0/0.0.0.0

;; я работаю с локальной машиной - но если надо, можно и другие прописать
permit = 127.0.0.1/255.255.255.255
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,log,verbose,user,config,command,reporting,originate

دا دواړه فایلونه باید په /etc/asterisk کې ځای په ځای شي، بیا ترتیبونه بیا ولولئ (یا ستوری بیا پیل کړئ)

# astrisk -rv
  Connected to Asterisk 16.6.2 currently running on freepbx (pid = 31629)
#freepbx*CLI> dialplan reload
     Dialplan reloaded.
#freepbx*CLI> exit

اوس راځئ چې PHP ته لاړ شو

د سکریپټونو پیل کول او د خدماتو رامینځته کول

څرنګه چې د Bitrix 24 سره د کار کولو سکیم، د AMI لپاره خدمت، په بشپړه توګه ساده او شفاف نه دی، دا باید په جلا توګه بحث وشي. Asterisk، کله چې AMI فعال شي، په ساده ډول بندر خلاصوي او بس. کله چې یو پیرودونکی یوځای کیږي، دا د اجازې غوښتنه کوي، بیا پیرودونکي اړین پیښو ته ګډون کوي. پیښې په ساده متن کې راځي، کوم چې PAMI په جوړښت شوي شیانو بدلوي او یوازې د ګټو، ساحو، شمیرو او نورو پیښو لپاره د فلټر کولو فعالیت تنظیم کولو وړتیا چمتو کوي.

هرڅومره ژر چې زنګ راشي ، د NewExten پیښه د والدین [from-pstn] شرایطو څخه پیل کیږي ، بیا ټولې پیښې په شرایطو کې د لیکو په ترتیب سره ځي. کله چې معلومات د CallMeCallerIDName او CallStart متغیرونو څخه ترلاسه کیږي چې په _custom dialplan کې مشخص شوي،

  1. د کارن ID غوښتنه کولو فعالیت د تمدید شمیرې سره مطابقت لري چیرې چې تلیفون راغلی. څه که دا د ډایل اپ ګروپ وي؟ پوښتنه سیاسي ده، ایا تاسو اړتیا لرئ چې هرچا ته په یو وخت کې زنګ ووهئ (کله چې هرڅوک په یو وخت کې زنګ ووهي) یا داسې جوړ کړئ لکه څنګه چې دوی په بدل کې زنګ وهي؟ ډیری پیرودونکي د Fisrt شتون تګلاره لري، نو پدې کې کومه ستونزه نشته، یوازې یو زنګ ووهئ. مګر مسله باید حل شي.

  2. په Bitrix24 کې د زنګ راجستریشن فعالیت، کوم چې CallID بیرته راګرځوي، کوم چې بیا د زنګ پیرامیټونو راپور ورکولو او د ثبت کولو لپاره لینک ته اړتیا لري. د تمدید شمیره یا یوزر ID ته اړتیا لري

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

د زنګ له پای ته رسیدو وروسته ، د ریکارډ ډاونلوډ فنکشن ویل کیږي ، کوم چې په ورته وخت کې د زنګ بشپړیدو حالت راپور ورکوي (مصروف ، نه ځواب ، بریا) ، او همدارنګه د ریکارډ سره mp3 فایل ته لینک ډاونلوډ کوي (که چیرې وي).

ځکه چې د CallMeIn.php ماډل په دوامداره توګه چلولو ته اړتیا لري، د دې لپاره د SystemD پیل کولو فایل جوړ شوی. callme.service، کوم چې باید په /etc/systemd/system/callme.service کې واچول شي

[Unit]
Description=CallMe

[Service]
WorkingDirectory=/var/www/html/callmeplus
ExecStart=/usr/bin/php /var/www/html/callmeplus/CallMeIn.php 2>&1 >>/var/log/callmeplus.log
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGKILL

Restart=on-failure
RestartSec=10s

#тут надо смотреть,какие права на папки
#User=www-data  #Ubuntu - debian
#User=nginx #Centos

[Install]
WantedBy=multi-user.target

د سکریپټ پیل او پیل د systemctl یا خدمت له لارې پیښیږي

# systemctl enable callme
# systemctl start callme

خدمت به د اړتیا سره سم خپل ځان بیا پیل کړي (د حادثې په صورت کې). د انباکس تعقیب خدمت د ویب سرور نصبولو ته اړتیا نلري، یوازې پی ایچ پی ته اړتیا ده (کوم چې یقینا د FeePBX سرور کې دی). مګر د ویب سرور له لارې د زنګ ریکارډونو ته د لاسرسي په نشتوالي کې (د https سره هم) ، دا به امکان ونلري چې د تلیفون ریکارډونو ته غوږ ونیول شي.

اوس راځئ چې د وتلو تلیفونونو په اړه وغږیږو. د CallMeOut.php سکریپټ دوه دندې لري:

  • د زنګ پیل کول کله چې د php سکریپټ لپاره غوښتنه ترلاسه شي (پشمول په بټریکس کې د "کال" تڼۍ کارول). دا د ویب سرور پرته کار نه کوي، غوښتنه د HTTP POST له لارې ترلاسه کیږي، غوښتنه یوه نښه لري

  • د زنګ په اړه پیغام، د هغې پیرامیټونه او ریکارډونه په Bitrix کې. د اسټریسک لخوا په [sub-call-internal-ended] ډایلپلان کې ډزې شوي کله چې زنګ پای ته ورسیږي

د FreePBX درک کول او دا د Bitrix24 او نور سره یوځای کول

ویب سرور یوازې د دوو شیانو لپاره اړین دی - د Bitrix ریکارډ فایلونو ډاونلوډ کول (د HTTPS له لارې) او د CallMeOut.php سکریپټ غږ کول. تاسو کولی شئ جوړ شوی FreePBX سرور وکاروئ، هغه فایلونه چې د دې لپاره دي /var/www/html، تاسو کولی شئ بل سرور نصب کړئ یا بله لاره مشخص کړئ.

د ویب سرور

راځئ چې د خپلواکې مطالعې لپاره د ویب سرور ترتیب پریږدو (ټایټس, ټایټس, ټایټس). که تاسو ډومین نه لرئ، تاسو کولی شئ د فری ډومین هڅه وکړئ ( https://www.freenom.com/ru/index.html)، کوم چې به تاسو ته ستاسو د سپینې IP لپاره وړیا نوم درکړي (د روټر له لارې د بندرونو 80، 443 ته لیږل مه هیروئ که چیرې بهرنۍ پته یوازې په دې کې وي). که تاسو یوازې د DNS ډومین رامینځته کړی ، نو تاسو باید انتظار وکړئ (له 15 دقیقو څخه تر 48 ساعتونو پورې) تر هغه چې ټول سرورونه بار شوي نه وي. د کورنیو چمتو کونکو سره د کار کولو تجربې له مخې - له 1 ساعت څخه په ورځ کې.

د نصب اتوماتیک

په ګیتوب کې یو انسټالر رامینځته شوی ترڅو نصب کول حتی اسانه کړي. مګر دا په کاغذ کې اسانه و - پداسې حال کې چې موږ دا ټول په لاسي ډول نصب کوو ، ځکه چې د دې ټولو سره له مینځلو وروسته دا روښانه شوه چې څه ملګري له چا سره دي ، څوک چیرې ځي او څنګه یې ډیبګ کوي. تر اوسه هیڅ نصب کونکی نشته

ډاکر

که تاسو غواړئ ژر تر ژره د حل هڅه وکړئ - د ډاکر سره یو اختیار شتون لري - ژر تر ژره یو کانټینر رامینځته کړئ ، بهر ته یې بندرونه ورکړئ ، د ترتیباتو فایلونه سلیپ کړئ او هڅه وکړئ (دا د LetsEncrypt کانټینر سره اختیار دی ، که تاسو دمخه سند لرئ. ، تاسو یوازې اړتیا لرئ چې ریورس پراکسي د FreePBX ویب سرور ته واستوئ (موږ ورته بل پورټ ورکړ 88 دی) ، LetsEncrypt په ډاکر کې دا مقاله

تاسو اړتیا لرئ فایل د ډاونلوډ شوي پروژې فولډر کې پرمخ وړئ (د ګیټ کلون وروسته) ، مګر لومړی د اسټریسک تشکیلاتو (استریسک فولډر) ته ورشئ او ریکارډونو ته لارې ولیکئ او هلته ستاسو د سایټ URL ولیکئ.

version: '3.3'
services:
  nginx:
    image: nginx:1.15-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/ssl_docker.conf:/etc/nginx/conf.d/ssl_docker.conf
  certbot:
    image: certbot/certbot
  freepbx:
    image: flaviostutz/freepbx
    ports:
      - 88:80 # для настройки
      - 5060:5060/udp
      - 5160:5160/udp
      - 127.0.0.1:5038:5038 # для CallMeOut.php
#      - 3306:3306
      - 18000-18100:18000-18100/udp
    restart: always
    environment:
      - ADMIN_PASSWORD=admin123
    volumes:
      - backup:/backup
      - recordings:/var/spool/asterisk/monitor
      - ./callme:/var/www/html/callme
      - ./systemd/callme.service:/etc/systemd/system/callme.conf
      - ./asterisk/manager_custom.conf:/etc/asterisk/manager_custom.conf
      - ./asterisk/extensions_custom.conf:/etc/asterisk/extensions_custom.conf
#      - ./conf/startup.sh:/startup.sh

volumes:
  backup:
  recordings:

دا docker-compose.yaml فایل له لارې چلیږي

docker-compose up -d

که nginx پیل نه کړي، نو د nginx/ssl_docker.conf فولډر کې په ترتیب کې یو څه غلط دی

نور ادغام

او ولې په ورته وخت کې ځینې CRM په سکریپټونو کې نه اچوي، موږ فکر کاوه. موږ ډیری نور CRM APIs مطالعه کړل، په ځانګړې توګه وړیا جوړ شوی PBX - ShugarCRM او Vtiger، او هو! هو، اصول یو شان دی. مګر دا بله کیسه ده، کوم چې موږ به وروسته په جلا توګه ګیتوب ته اپلوډ کړو.

مرجع

اعلامیه: د حقیقت سره هر ډول ورته والی فرضی دی او دا زه نه وم.

سرچینه: www.habr.com

Add a comment