FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ቢትሪክስ24 CRMን፣ ዚስራ ፍሰትን፣ ዚሂሳብ አያያዝን እና ሌሎቜ ብዙ አስተዳዳሪዎቜ ዚሚወዷ቞ውን እና ዚአይቲ ሰራተኞቜ ዚማይወዷ቞ውን ነገሮቜ ዚሚያጣምር ትልቅ ጥምሚት ነው። ፖርታሉ ብዙ ትናንሜ ክሊኒኮቜን, አምራ቟ቜን እና ዚውበት ሳሎኖቜን ጚምሮ ብዙ ትናንሜ እና መካኚለኛ ኩባንያዎቜ ይጠቀማሉ. አስተዳዳሪዎቜ "ዚሚወዱት" ዋናው ተግባር ዹቮሌፎን እና ዹ CRM ውህደት ነው, ማንኛውም ጥሪ ወዲያውኑ በ CRM ውስጥ ሲመዘገብ, ዹደንበኛ ካርዶቜ ይፈጠራሉ, ሲመጡ, ስለ ደንበኛው መሹጃ ይታያል እና እሱ ማን እንደሆነ, ምን እንደሆነ ወዲያውኑ ማዚት ይቜላሉ. መሞጥ ይቜላል እና ምን ያህል ዕዳ እንዳለበት. ነገር ግን ኹBitrix24 ያለው ስልክ እና ኹ CRM ጋር ያለው ውህደት ገንዘብ ያስኚፍላል፣ አንዳንዎም ብዙ ነው። በጜሁፉ ውስጥ በክፍት መሳሪያዎቜ እና በታዋቂው IP PBX ዚመዋሃድ ልምድ እነግርዎታለሁ ፍሪፒቢክስ, እና እንዲሁም ዚተለያዩ ክፍሎቜን ሥራ አመክንዮ ግምት ውስጥ ያስገቡ

ዹአይፒ ቮሌፎንን በሚሞጥ እና በሚያዋቅር ኩባንያ ውስጥ እንደ ዹውጭ ምንጭ እሰራለሁ ። ለዚህ እና ለዚህ ኩባንያ Bitrix24 ን ደንበኞቜ ካላ቞ው ፒቢኀክስ እንዲሁም ኚቚርቹዋል ፒቢኀክስ ጋር በተለያዩ ዚቪዲኀስ ኩባንያዎቜ ለማዋሃድ አንድ ነገር ማቅሚብ እንቜል እንደሆነ ስጠዚቅ ወደ ጎግል ሄጄ ነበር። እና በእርግጥ እሱ አገናኝ ሰጠኝ። habr ውስጥ ጜሑፍ, መግለጫ ባለበት, እና github, እና ሁሉም ነገር ዚሚሰራ ይመስላል. ግን ይህንን መፍትሄ ለመጠቀም ሲሞክሩ Bitrix24 ኹአሁን በኋላ ኚቀድሞው ጋር አንድ አይነት አይደለም እና ብዙ እንደገና መስተካኚል አለበት። በተጚማሪም, FreePBX ለእርስዎ ባዶ ምልክት አይደለም, እዚህ ዹአጠቃቀም ቀላልነትን እና ዚሃርድኮር ዲል ፕላን በማዋቀር ፋይሎቜ ውስጥ እንዎት እንደሚዋሃዱ ማሰብ አለብዎት.

ዚሥራውን አመክንዮ እናጠናለን

ስለዚህ ለጀማሪዎቜ, ሁሉም እንዎት እንደሚሰራ. ጥሪ ኹ PBX (ኚአቅራቢው ዹ SIP ይጋብዙ ክስተት) ጥሪ ሲደርስ ዚዲያልፕላኑ ሂደት (ዚመደወያ ፕላን, ዲልፕላን) ይጀምራል - ኚጥሪው ጋር ምን እና በምን ቅደም ተኹተል እንደሚደሚግ ደንቊቜ. ኚመጀመሪያው ፓኬት ብዙ መሹጃ ማግኘት ይቜላሉ, ኚዚያም በደንቊቹ ውስጥ ጥቅም ላይ ሊውል ይቜላል. ዹ SIP ውስጣዊ ክፍሎቜን ለማጥናት በጣም ጥሩ መሳሪያ ተንታኝ ነው sngrep (ሳንቲም) በቀላሉ በታዋቂ ስርጭቶቜ ውስጥ በ apt install/ym install እና በመሳሰሉት ዚተጫነ ነገር ግን ኚምንጩ ሊገነባ ይቜላል። በ sngrep ውስጥ ያለውን ዚጥሪ መዝገብ እንይ

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ቀለል ባለ መልኩ ዚዲያልፕላኑ ዚመጀመሪያውን ፓኬት ብቻ ነው ዚሚመለኚተው፣ አንዳንዎም በንግግር ጊዜ፣ ጥሪዎቜ ይተላለፋሉ፣ ዚአዝራር ማተሚያዎቜ (DTMF)፣ ዚተለያዩ ሳቢ ነገሮቜ እንደ FollowMe፣ RingGroup፣ IVR እና ሌሎቜም።

በግብዣ ጥቅል ውስጥ ያለው

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

እንደ እውነቱ ኚሆነ፣ አብዛኞቹ ቀላል መደወያዎቜ ኚመጀመሪያዎቹ ሁለት መስኮቜ ጋር ይሰራሉ፣ እና አጠቃላይ አመክንዮው ዚሚያጠነጥነው በዲአይዲ እና በCallerID ላይ ነው። አደሹግን - በምንጠራበት, CallerID - ዹሚደውል.

ግን ኹሁሉም በኋላ እኛ ኩባንያ አለን እና አንድ ስልክ አይደለም - ይህ ማለት ፒቢኀክስ ምናልባት ዚጥሪ ቡድኖቜ (በተመሳሳይ / ተኚታታይ በርካታ መሳሪያዎቜ) በኹተማ ቁጥሮቜ (ዚቀለበት ቡድን) ፣ IVR (ሄሎ ፣ ደውለዋል ... ተጫን) ማለት ነው ። አንድ ለ ...)፣ መልስ ሰጪ ማሜኖቜ (ሀሚጎቜ)፣ ዹጊዜ ሁኔታዎቜ፣ ወደ ሌሎቜ ቁጥሮቜ ወይም ወደ ሕዋስ (FollowMe፣ Forward) ማስተላለፍ። ይህ ማለት ማን በትክክል ጥሪ እንደሚቀበል እና ጥሪ ሲመጣ ኹማን ጋር እንደሚነጋገር በማያሻማ ሁኔታ መወሰን በጣም ኚባድ ነው። በደንበኞቻቜን PBX ውስጥ ዹተለመደው ጥሪ መጀመሪያ ምሳሌ እዚህ አለ።

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ጥሪው በተሳካ ሁኔታ ወደ ፒቢኀክስ ኚገባ በኋላ በተለያዩ "አውዶቜ" ውስጥ በመደወያው ውስጥ ይጓዛል። ኚኮኚብ እይታ አንጻር ያለው አውድ ቁጥር ዚተሰጣ቞ው ዚትእዛዞቜ ስብስብ ነው፣ እያንዳንዱም በተደወለው ቁጥር ማጣሪያን ይይዛል (ለውጫዊ ጥሪ በመነሻ ደሹጃ exten=DID) ይባላል። በመደወያው መስመር ውስጥ ያሉት ትዕዛዞቜ ማንኛውም ሊሆኑ ይቜላሉ - ዚውስጥ ተግባራት (ለምሳሌ ፣ ዚውስጥ ተመዝጋቢ ይደውሉ - Dial()ስልኩን አስቀምጠው - Hangup()ሁኔታዊ ኊፕሬተሮቜ (IF, ELSE, ExecIF እና ዚመሳሰሉት) ፣ ወደ ሌሎቜ ዹዚህ አውድ ህጎቜ ሜግግር (Goto, GotoIF), ወደ ሌሎቜ አውዶቜ በተግባራዊ ጥሪ መልክ (Gosub, Macro) ሜግግር. ዹተለዹ መመሪያ include ОЌя_кПМтекста, ትዕዛዞቜን ኹሌላ አውድ ወደ ዹአሁኑ አውድ መጚሚሻ ዚሚጚምር። ዚተካተቱት ትዕዛዞቜ ሁል ጊዜ ይኚናወናሉ። пПсле ዹአሁኑ አውድ ትዕዛዞቜ.

ዚፍሪፒቢኀክስ አጠቃላይ አመክንዮ ዚተገነባው በጎሱብ፣ በማክሮ እና በሃንድለር ተቆጣጣሪዎቜ በኩል በማካተት እና በመደወል ዚተለያዩ አገባቊቜን ወደ አንዱ በማካተት ነው። ዹFreePBX ጥሪዎቜን አውድ አስቡበት

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ጥሪው በዚተራ ኹላይ እስኚ ታቜ በሁሉም አውድ ውስጥ ያልፋል፣ በእያንዳንዱ አውድ ውስጥ እንደ ማክሮ (ማክሮ)፣ ተግባራት (Gosub) ወይም ልክ መሞጋገሪያዎቜ (ጎቶ) ያሉ ጥሪዎቜ ሊኖሩ ይቜላሉ፣ ስለዚህ ዚሚጠራው እውነተኛው ዛፍ ብቻ ነው። በምዝግብ ማስታወሻዎቜ ውስጥ መኚታተል.

ለተለመደው PBX ዹተለመደ ዹማዋቀር ንድፍ ኹዚህ በታቜ ይታያል። በሚደውሉበት ጊዜ ዲአይዲ በመጪ መስመሮቜ ውስጥ ይፈለጋል, ጊዜያዊ ሁኔታዎቜ ለእሱ ምልክት ይደሚግባ቞ዋል, ሁሉም ነገር በቅደም ተኹተል ኹሆነ, ዚድምጜ ምናሌው ተጀምሯል. ኚእሱ፣ አዝራሩን 1 በመጫን ወይም በማለቁ ጊዜ ወደ መደወያ ኊፕሬተሮቜ ቡድን ይውጡ። ጥሪው ካለቀ በኋላ, ዹ hangupcal ማክሮ ይባላል, ኚዚያ በኋላ ልዩ ተቆጣጣሪዎቜ (ሃንጉፕ ተቆጣጣሪ) ካልሆነ በቀር በመደወያው ውስጥ ምንም ማድሚግ አይቻልም.

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

በዚህ ዚጥሪ ስልተ-ቀመር ውስጥ ስለ ጥሪው አጀማመር መሹጃ ለ CRM ዚት እናቀርባለን ፣ መቅዳት ዚት እንደሚጀመር ፣ ቀሚጻውን ዚት እንደምናቆም እና ወደ CRM ኚጥሪው መሹጃ ጋር መላክ አለብን?

ኹውጭ ስርዓቶቜ ጋር ውህደት

PBX እና CRM ውህደት ምንድን ነው? እነዚህ በእነዚህ ሁለት መድሚኮቜ መካኚል ውሂብን እና ክስተቶቜን ዚሚቀይሩ እና እርስ በእርስ ዚሚላኩ መቌቶቜ እና ፕሮግራሞቜ ና቞ው። ለገለልተኛ ስርዓቶቜ በጣም ዹተለመደው ዹመገናኛ መንገድ በኀፒአይዎቜ በኩል ነው, እና ኀፒአይዎቜን ለማግኘት በጣም ታዋቂው መንገድ HTTP REST ነው. ግን ለኮኚብ ምልክት አይደለም።

ኮኚቢት ውስጥ ያለው፡-

  • AGI - ዚተመሳሰለ ዹውጭ ፕሮግራሞቜ/አካላት ጥሪ፣ በዋናነት በዲያልፕላኑ ውስጥ ጥቅም ላይ ዚዋለ፣ እንደ ቀተ-መጻሕፍት አሉ phpagi, PAGI

  • ኀኀምአይ - ለክስተቶቜ መመዝገብ እና ዚጜሑፍ ትዕዛዞቜን በማስገባት መርህ ላይ ዚሚሰራ ዚጜሑፍ TCP ሶኬት ኚውስጥ SMTP ጋር ይመሳሰላል ፣ ክስተቶቜን መኚታተል እና ጥሪዎቜን ማስተዳደር ይቜላል ፣ ቀተ-መጜሐፍት አለ PAMI - ኚኮኚቢት ጋር ግንኙነት ለመፍጠር በጣም ታዋቂው

ዚኀኀምአይ ዚውጀት ምሳሌ

ክስተት፡ አዲስ ቻናል
ልዩ መብት: ይደውሉ, ሁሉም
ቻናል፡ PJSIP/VMS_pjsip-0000078b
ዚቻናል ሁኔታ፡ 4
ChannelStateDesc፡ ደውል
ደዋይ ቁጥር፡ 111222
ዹደዋይ መታወቂያ፡ 111222
ዹተገናኘ መስመር ቁጥር፡
ዹተገናኘ ዚመስመር ስም
ቋንቋ፡ en
መለያ ኮድ
አውድ፡ from-pstn
ማራዘም፡ ኀስ
ቅድሚያ: 1
ልዩ: 1599589046.5244
ሊንክዲዲ: 1599589046.5244

  • ARI ዚሁለቱም ድብልቅ ነው፣ ሁሉም በ REST፣ WebSocket፣ በJSON ቅርጞት - ነገር ግን ትኩስ ቀተ-መጻሕፍት እና መጠቅለያዎቜ ያሉት፣ በጣም ጥሩ ያልሆነ፣ ኚእጅ ውጪ ዹተገኘ (phaparia, phpari) ኹ 3 ዓመታት በፊት በእድገታ቞ው ውስጥ ሆኗል.

ጥሪ ሲጀመር ዹ ARI ውፅዓት ምሳሌ

{"ተለዋዋጭ":"CallMeCallerIDName", "እሎት":"111222", "አይነት":"ChannelVarset", "ዹጊዜ ማህተም":"2020-09-09T09:38:36.269+0000", "ቻናል":{"መታወቂያ »፡»1599644315.5334″፣ «ስም»፡»PJSIP/VMSpjsip-000007b6″፣ "ግዛት"፡"መደወል"፣ "ደዋይ"፡{"ስም"፡"111222"፣ "ቁጥር"፡"111222" }፣ "ተገናኝቷል":{"ስም":""፣ "ቁጥር" :"" }, "ዚመለያ ኮድ":"", "መደወያ ዕቅድ":{"አውድ":"from-pstn", "exten":"s", "ቅድሚያ":2, "መተግበሪያname":"Stasis", "መተግበሪያdata":"ሄሎ-ዓለም" }፣ "ዚፍጥሚት ጊዜ":"2020-09-09T09:38:35.926+0000"፣ "ቋንቋ":"en" }፣ "ኮኚብid":"48:5b:a:aa:aa:aa", "መተግበሪያ":"ሄሎ-ዓለም"}}

ም቟ት ወይም አለመመቻ቞ት፣ ኹተወሰነ ኀፒአይ ጋር ዚመሥራት ዕድል ወይም አለመቻል ዹሚወሰነው መፍታት በሚያስፈልጋ቞ው ተግባራት ነው። ኹ CRM ጋር ዚመዋሃድ ተግባራት እንደሚኚተለው ናቾው

  • ዚጥሪውን መጀመሪያ ፣ ዚተላለፈበትን ቊታ ይኚታተሉ ፣ ዹደዋይ መታወቂያ ፣ ዲአይዲ ፣ ዚመጀመሪያ እና ዚመጚሚሻ ጊዜ ፣ ​​ምናልባት ኚማውጫው ውስጥ ውሂብ (በስልክ እና በ CRM ተጠቃሚ መካኚል ግንኙነት ለመፈለግ) ያውጡ ።

  • ዚጥሪውን ቅጂ ይጀምሩ እና ይጚርሱ, በተፈለገው ቅርጞት ያስቀምጡት, ፋይሉ ዚሚገኝበትን ቀሚጻ መጚሚሻ ላይ ያሳውቁ.

  • በውጫዊ ክስተት ላይ ጥሪ ይጀምሩ (ኚፕሮግራሙ), ዚውስጥ ቁጥር, ዹውጭ ቁጥር ይደውሉ እና ያገናኙዋ቞ው

  • አማራጭቊታ በሌለበት (በ CRM መሠሚት) ጥሪዎቜን በራስ-ሰር ለማስተላለፍ ኹ CRM ፣ ደዋይ ቡድኖቜ እና FollowME ጋር ይዋሃዱ

እነዚህ ሁሉ ተግባራት በኀኀምአይ ወይም በ ARI ሊፈቱ ይቜላሉ፣ነገር ግን ARI ብዙ መሚጃዎቜን ይሰጣል፣ ብዙ ክስተቶቜ ዚሉም፣ ብዙ ተለዋዋጮቜ ኀኀምአይ አሁንም ያለው (ለምሳሌ ማክሮ ጥሪዎቜ፣ ማክሮ ውስጥ ተለዋዋጮቜን ማቀናበር፣ ዚጥሪ ቀሚጻን ጚምሮ) ክትትል አይደሚግባ቞ውም። ስለዚህ፣ ለትክክለኛ እና ትክክለኛ ክትትል፣ አሁን ኀኀምአይን እንምሚጥ (ግን ሙሉ በሙሉ አይደለም)። በተጚማሪም (ጥሩ ፣ ያለዚህ ዚት ሊሆን ይቜላል ፣ እኛ ሰነፍ ሰዎቜ ነን) - በዋናው ሥራ (habr ውስጥ ጜሑፍ) PAMI ይጠቀሙ። *ኚዚያ ወደ ARI እንደገና ለመፃፍ መሞኹር ያስፈልግዎታል, ነገር ግን ዚሚሰራው እውነታ አይደለም.

ውህደትን እንደገና በማደስ ላይ

ዚእኛ FreePBX ስለ ዚጥሪው መጀመሪያ ፣ ዚመጚሚሻ ጊዜ ፣ ​​ቁጥሮቜ ፣ ዚተመዘገቡ ፋይሎቜ ስሞቜ ቀላል በሆነ መንገድ ለኀኀምአይ ሪፖርት ማድሚግ እንዲቜል እንደ መጀመሪያዎቹ ደራሲዎቜ ተመሳሳይ ዘዮ በመጠቀም ዚጥሪውን ቆይታ ማስላት በጣም ቀላል ነው። - ተለዋዋጮቜዎን ያስገቡ እና ለመገኘት ውጀቱን ይተንትኑ። PAMI ይህንን በቀላሉ በማጣሪያ ተግባር እንዲያደርጉ ይጠቁማል።

ለጥሪው መጀመሪያ ጊዜ ዚእራስዎን ተለዋዋጭ ዹማዋቀር ምሳሌ እዚህ አለ (s ልዩ ቁጥር በዲያልፕላኑ ውስጥ ያለ ፍለጋ ኚመጀመሩ በፊት ይኹናወናል)

[ext-did-custom]

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

ለዚህ መስመር ምሳሌ ዚኀኀምአይ ክስተት

ክስተት፡ አዲስ ቻናል

ልዩ መብት: ይደውሉ, ሁሉም

ቻናል፡ PJSIP/VMS_pjsip-0000078b

ዚቻናል ሁኔታ፡ 4

ChannelStateDesc፡ ደውል

ደዋይ ቁጥር፡ 111222

ዹደዋይ መታወቂያ፡ 111222

ዹተገናኘ መስመር ቁጥር፡

ዹተገናኘ ዚመስመር ስም

ቋንቋ፡ en

መለያ ኮድ

አውድ፡ from-pstn

ማራዘም፡ ኀስ

ቅድሚያ: 1

ልዩ: 1599589046.5244

ሊንክዲዲ: 1599589046.5244

መተግበሪያ፡ AppData አዘጋጅ፡

CallStart=1599571046

ምክንያቱም FreePBX ፋይሎቹን dimensionion.conf እና dimensionion_ ስለሚጜፍ ነው።ተጚማሪ.conf, ፋይሉን እንጠቀማለን ስፋት_ብጁ.ኮፍ

ዹመጠን_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

ኹዋናው መጣጥፍ ደራሲዎቜ ዚመጀመሪያ ፕላን ባህሪ እና ልዩነት -

  • Dialplan በ .conf ቅርጞት፣ FreePBX እንደሚፈልገው (አዎ፣ .ael ይቜላል፣ ግን ሁሉም ስሪቶቜ አይደሉም እና ሁልጊዜም ምቹ አይደለም)

  • መጚሚሻውን በ exten=>ሞ ኚማስኬድ ይልቅ ሂደት በ hangup_handler ተጀመሚ።

  • ዹቋሚ ስክሪፕት ጥሪ ሕብሚቁምፊ፣ ዚተጚመሩ ጥቅሶቜ እና ዹውጭ ጥሪ ቁጥር ExtNum

  • ማቀነባበር ወደ _ብጁ አውድ ተወስዷል እና ዹFreePBX ውቅሮቜን እንዳይነኩ ወይም እንዲያርትዑ ያስቜልዎታል - ዚሚመጣው በ [ext-አደሹገ-ብጁ]፣ በ[ወደ ውጪ-አዞዎቜ-ብጁ]

  • ኚቁጥሮቜ ጋር ምንም ማያያዝ ዹለም - ፋይሉ ሁለንተናዊ ነው እና ለመንገድ እና ኚአገልጋዩ ጋር ማገናኘት ብቻ ነው ዚሚያስፈልገው

ለመጀመር በ 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 ጋር አብሮ ዚመስራት እቅድ ሙሉ በሙሉ ቀላል እና ግልጜ ስላልሆነ በተናጠል መወያዚት አለበት። አስትሪስክ፣ ኀኀምአይ ሲነቃ በቀላሉ ወደቡን ይኚፍታል እና ያ ነው። አንድ ደንበኛ ሲቀላቀል ፈቀዳ ይጠይቃል፣ ኚዚያ ደንበኛው አስፈላጊ ለሆኑ ክስተቶቜ ይመዘገባል። ክስተቶቜ ግልጜ በሆነ ጜሑፍ ይመጣሉ፣ ይህም PAMI ወደ ዚተዋቀሩ ነገሮቜ ይለውጣል እና ዚማጣራት ተግባሩን ለፍላጎት ክስተቶቜ፣ መስኮቜ፣ ቁጥሮቜ ወዘተ ብቻ ዚማዘጋጀት ቜሎታ ይሰጣል።

ጥሪው እንደገባ፣ ዚኒውኀክስተን ክስተት ኹወላጅ [from-pstn] አውድ ጀምሮ ይቃጠላል፣ ኚዚያ ሁሉም ክስተቶቜ በአውድ ውስጥ በመስመሮቜ ቅደም ተኹተል ይሄዳሉ። በ _custom dialplan ውስጥ ኚተገለጹት ኹCallerMeCallerIDName እና CallStart ተለዋዋጮቜ መሹጃ ሲደርሰው፣

  1. ጥሪው ኚመጣበት ዚኀክስ቎ንሜን ቁጥር ጋር ዹሚዛመደውን ዹተጠቃሚ መታወቂያ ዹመጠዹቅ ተግባር። መደወያ ቡድን ቢሆንስ? ጥያቄው ፖለቲካዊ ነው፣ ለሁሉም ጥሪ በአንድ ጊዜ መፍጠር አለብህ (ሁሉም ሰው በአንድ ጊዜ ሲደውል) ወይስ ተራ በተራ ሲደውል እንደጠራው መፍጠር አለብህ? አብዛኛዎቹ ደንበኞቜ ዹ Fisrt Available ስልት አላቾው, ስለዚህ በዚህ ላይ ምንም ቜግር ዚለበትም, አንድ ጥሪ ብቻ ነው. ግን ጉዳዩ እልባት ሊሰጠው ይገባል።

  2. በ Bitrix24 ውስጥ ያለው ዚጥሪ ምዝገባ ተግባር, CallID ን ይመልሳል, ኚዚያም ዚጥሪ መለኪያዎቜን እና ወደ ቀሚጻው አገናኝን ሪፖርት ለማድሚግ ያስፈልጋል. ዚኀክስ቎ንሜን ቁጥር ወይም ዹተጠቃሚ መታወቂያ ያስፈልገዋል

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ኚጥሪው ማብቂያ በኋላ ዚመዝገቡ ዚማውሚድ ተግባር ተጠርቷል ፣ እሱም በተመሳሳይ ጊዜ ዚጥሪው ማጠናቀቂያ ሁኔታን (ስራ ላይ ነው ፣ መልስ ዹለም ፣ ስኬት) እና እንዲሁም ወደ mp3 ፋይል ኚመዝገብ (ካለ) ያውርዳል።

ዹCallMeIn.php ሞጁል ያለማቋሚጥ መስራት ስለሚያስፈልገው ዹSystemD ማስጀመሪያ ፋይል ለእሱ ተፈጥሯል። callme.አገልግሎት, በ /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

አገልግሎቱ እንደ አስፈላጊነቱ (በአደጋ ጊዜ) ራሱን እንደገና ይጀምራል። ዚገቢ መልእክት ሳጥን መኚታተያ አገልግሎት ዚድር አገልጋይ መጫን አያስፈልገውም፣ php ብቻ ነው ዚሚያስፈልገው (ይህም በእርግጠኝነት በFeePBX አገልጋይ ላይ ነው።) ነገር ግን ዚጥሪ መዝገቊቜን በድር አገልጋይ (በተጚማሪም ኹ https ጋር) ማግኘት በማይቻልበት ጊዜ ዚጥሪ መዝገቊቜን ማዳመጥ አይቻልም።

አሁን ስለ ወጪ ጥሪዎቜ እንነጋገር። ዹCallMeOut.php ስክሪፕት ሁለት ተግባራት አሉት።

  • ዹ php ስክሪፕት ጥያቄ ሲደርሰው ዚጥሪ ማነሳሳት (በራሱ Bitrix ውስጥ ያለውን "ጥሪ" ቁልፍ መጠቀምን ጚምሮ)። ያለ ድር አገልጋይ አይሰራም, ጥያቄው በ HTTP POST በኩል ይቀበላል, ጥያቄው ማስመሰያ ይዟል

  • በBitrix ውስጥ ስለ ጥሪው ፣ ግቀቶቜ እና መዝገቊቹ መልእክት። ጥሪ ሲያልቅ በ(ንዑስ ጥሪ-ውስጥ-በተጠናቀቀ) መደወያ ዕቅድ ውስጥ በአስሪስክ ተባሚሚ

FreePBX ን መሚዳት እና ኹBitrix24 እና ሌሎቜ ጋር ማዋሃድ

ዚድር አገልጋዩ ዚሚያስፈልገው ለሁለት ነገሮቜ ብቻ ነው - ዹBitrix ሪኮርድ ፋይሎቜን (በ HTTPS በኩል) ማውሚድ እና ዹCallMeOut.php ስክሪፕት መደወል። አብሮ ዚተሰራውን ዹFreePBX አገልጋይ መጠቀም ይቜላሉ፣ ለነሱም ፋይሎቜ /var/www/html፣ ሌላ አገልጋይ መጫን ወይም ዹተለዹ መንገድ መግለጜ ይቜላሉ።

ዚድር አገልጋይ

ለገለልተኛ ጥናት ዚድር አገልጋይ ማዋቀሩን እንተወው (ቲትስ, ቲትስ, ቲትስ). ጎራ ኚሌለህ፣ FreeDomainን መሞኹር ትቜላለህ https://www.freenom.com/ru/index.html), ይህም ለነጩ አይፒዎ ነፃ ስም ይሰጥዎታል (ውጫዊው አድራሻ በእሱ ላይ ብቻ ኹሆነ ወደቊቜ 80, 443 በራውተር በኩል ማስተላለፍን አይርሱ). ዚዲ ኀን ኀስ ጎራ ኚፈጠሩ፣ ሁሉም አገልጋዮቜ እስኪጫኑ ድሚስ (ኹ15 ደቂቃ እስኚ 48 ሰአታት) መጠበቅ አለቊት። ኹአገር ውስጥ አቅራቢዎቜ ጋር ዚመሥራት ልምድ እንደሚለው - ኹ 1 ሰዓት እስኚ አንድ ቀን.

ዚመጫኛ አውቶማቲክ

መጫኑን ዹበለጠ ቀላል ለማድሚግ በgithub ላይ ጫኝ ተዘጋጅቷል። ግን በወሚቀት ላይ ለስላሳ ነበር - ሁሉንም ነገር በእጃቜን እዚጫንን እያለ ፣ኚዚህ ሁሉ ጋር ኚተጣመሚ በኋላ ፣ ኹማን ጋር ጓደኛ ፣ ማን ዚት እና እንዎት ማሹም እንዳለበት ግልፅ ሆነ ። እስካሁን ምንም ጫኝ ዚለም።

Docker

መፍትሄውን በፍጥነት መሞኹር ኹፈለጉ - ኚዶኚር ጋር አንድ አማራጭ አለ - በፍጥነት መያዣ ይፍጠሩ ፣ ወደቊቜን ወደ ውጭ ይስጡ ፣ ዚቅንብሮቜ ፋይሎቜን ያንሞራትቱ እና ይሞክሩ (ይህ ቀድሞውኑ ዚምስክር ወሚቀት ካለዎት በ LetsEncrypt መያዣ ያለው አማራጭ ነው) ዚተገላቢጊሹን ፕሮክሲ ወደ FreePBX ዌብ ሰርቹር ማዞር ብቻ ያስፈልግዎታል (ሌላ ወደብ 88 ሰጥተነዋል)፣ LetsEncrypt in docker በ ላይ በመመስሚት ይህ ዓምድ

ፋይሉን በወሹደው ዚፕሮጀክት አቃፊ (ኹgit clone በኋላ) ማስኬድ አለቊት፣ ነገር ግን መጀመሪያ ወደ ዚኮኚብ ውቅሮቜ (ዚኮኚብ ማህደር) ይግቡ እና ወደ መዝገቊቜ እና ዚጣቢያዎ ዩአርኀል ዚሚወስዱትን መንገዶቜ ይፃፉ።

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 ኀፒአይዎቜን አጥንተናል፣ በተለይም ነፃ አብሮ ዚተሰራውን PBX - ShugarCRM እና Vtiger፣ እና አዎ! አዎ መርህ አንድ ነው። ግን ይህ ሌላ ታሪክ ነው፣ እሱም በኋላ ወደ github ለዚብቻ ዚምንጭነው።

ማጣቀሻዎቜ

ዚኃላፊነት ማስተባበያ፡ ኚእውነታው ጋር ዚሚመሳሰል ማንኛውም ዓይነት ምናባዊ ነው እና እኔ አልነበርኩም።

ምንጭ: hab.com

አስተያዚት ያክሉ