FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಬಿಟ್ರಿಕ್ಸ್24 ಸಿಆರ್‌ಎಂ, ವರ್ಕ್‌ಫ್ಲೋ, ಅಕೌಂಟಿಂಗ್ ಮತ್ತು ಮ್ಯಾನೇಜರ್‌ಗಳು ನಿಜವಾಗಿಯೂ ಇಷ್ಟಪಡುವ ಮತ್ತು ಐಟಿ ಸಿಬ್ಬಂದಿ ನಿಜವಾಗಿಯೂ ಇಷ್ಟಪಡದಂತಹ ಅನೇಕ ವಿಷಯಗಳನ್ನು ಸಂಯೋಜಿಸುವ ದೊಡ್ಡ ಸಂಯೋಜನೆಯಾಗಿದೆ. ಸಣ್ಣ ಕ್ಲಿನಿಕ್‌ಗಳು, ತಯಾರಕರು ಮತ್ತು ಬ್ಯೂಟಿ ಸಲೂನ್‌ಗಳು ಸೇರಿದಂತೆ ಅನೇಕ ಸಣ್ಣ ಮತ್ತು ಮಧ್ಯಮ ಗಾತ್ರದ ಕಂಪನಿಗಳು ಪೋರ್ಟಲ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ವ್ಯವಸ್ಥಾಪಕರು "ಪ್ರೀತಿ" ಮಾಡುವ ಮುಖ್ಯ ಕಾರ್ಯವೆಂದರೆ ಟೆಲಿಫೋನಿ ಮತ್ತು ಸಿಆರ್ಎಂನ ಏಕೀಕರಣ, ಯಾವುದೇ ಕರೆಯನ್ನು ತಕ್ಷಣವೇ ಸಿಆರ್ಎಂನಲ್ಲಿ ರೆಕಾರ್ಡ್ ಮಾಡಿದಾಗ, ಕ್ಲೈಂಟ್ ಕಾರ್ಡ್ಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ, ಒಳಬರುವಾಗ, ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅವನು ಯಾರು, ಅವನು ಏನು ಎಂದು ನೀವು ತಕ್ಷಣ ನೋಡಬಹುದು. ಮಾರಾಟ ಮಾಡಬಹುದು ಮತ್ತು ಅವನು ಎಷ್ಟು ಋಣಿಯಾಗಿದ್ದಾನೆ. ಆದರೆ Bitrix24 ನಿಂದ ಟೆಲಿಫೋನಿ ಮತ್ತು CRM ನೊಂದಿಗೆ ಅದರ ಏಕೀಕರಣವು ಹಣವನ್ನು ಖರ್ಚು ಮಾಡುತ್ತದೆ, ಕೆಲವೊಮ್ಮೆ ಬಹಳಷ್ಟು. ಲೇಖನದಲ್ಲಿ ನಾನು ತೆರೆದ ಪರಿಕರಗಳು ಮತ್ತು ಜನಪ್ರಿಯ IP PBX ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವ ಅನುಭವವನ್ನು ಹೇಳುತ್ತೇನೆ ಫ್ರೀಪಿಬಿಎಕ್ಸ್, ಮತ್ತು ವಿವಿಧ ಭಾಗಗಳ ಕೆಲಸದ ತರ್ಕವನ್ನು ಸಹ ಪರಿಗಣಿಸಿ

ನಾನು ಐಪಿ ಟೆಲಿಫೋನಿಯನ್ನು ಮಾರಾಟ ಮಾಡುವ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ, ಸಂಯೋಜಿಸುವ ಕಂಪನಿಯಲ್ಲಿ ಹೊರಗುತ್ತಿಗೆಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತೇನೆ. ಗ್ರಾಹಕರು ಹೊಂದಿರುವ PBX ಗಳೊಂದಿಗೆ Bitrix24 ಅನ್ನು ಸಂಯೋಜಿಸಲು ಮತ್ತು ವಿವಿಧ VDS ಕಂಪನಿಗಳಲ್ಲಿ ವರ್ಚುವಲ್ PBX ಗಳೊಂದಿಗೆ ನಾವು ಇದಕ್ಕೆ ಮತ್ತು ಈ ಕಂಪನಿಗೆ ಏನಾದರೂ ನೀಡಬಹುದೇ ಎಂದು ನನ್ನನ್ನು ಕೇಳಿದಾಗ, ನಾನು Google ಗೆ ಹೋದೆ. ಮತ್ತು ಸಹಜವಾಗಿ ಅವರು ನನಗೆ ಲಿಂಕ್ ನೀಡಿದರು habr ನಲ್ಲಿ ಲೇಖನ, ಅಲ್ಲಿ ವಿವರಣೆ ಇದೆ, ಮತ್ತು ಗಿಥಬ್, ಮತ್ತು ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡಲು ತೋರುತ್ತದೆ. ಆದರೆ ಈ ಪರಿಹಾರವನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ, Bitrix24 ಮೊದಲಿನಂತೆಯೇ ಇರುವುದಿಲ್ಲ ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಪುನಃ ಮಾಡಬೇಕಾಗಿದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, FreePBX ನಿಮಗೆ ಬೇರ್ ನಕ್ಷತ್ರವಲ್ಲ, ಇಲ್ಲಿ ನೀವು ಬಳಕೆಯ ಸುಲಭತೆ ಮತ್ತು ಸಂರಚನಾ ಫೈಲ್‌ಗಳಲ್ಲಿ ಹಾರ್ಡ್‌ಕೋರ್ ಡಯಲ್‌ಪ್ಲಾನ್ ಅನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸಬೇಕು ಎಂಬುದರ ಕುರಿತು ಯೋಚಿಸಬೇಕು.

ನಾವು ಕೆಲಸದ ತರ್ಕವನ್ನು ಅಧ್ಯಯನ ಮಾಡುತ್ತೇವೆ

ಆದ್ದರಿಂದ ಆರಂಭಿಕರಿಗಾಗಿ, ಅದು ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕು. PBX ಹೊರಗಿನಿಂದ ಕರೆ ಸ್ವೀಕರಿಸಿದಾಗ (ಒದಗಿಸುವವರಿಂದ SIP ಆಹ್ವಾನ ಈವೆಂಟ್), ಡಯಲ್‌ಪ್ಲಾನ್ (ಡಯಲ್ ಪ್ಲಾನ್, ಡಯಲ್‌ಪ್ಲಾನ್) ಪ್ರಕ್ರಿಯೆಯು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ - ಕರೆಯೊಂದಿಗೆ ಏನು ಮತ್ತು ಯಾವ ಕ್ರಮದಲ್ಲಿ ಮಾಡಬೇಕೆಂಬ ನಿಯಮಗಳು. ಮೊದಲ ಪ್ಯಾಕೆಟ್ನಿಂದ, ನೀವು ಬಹಳಷ್ಟು ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಬಹುದು, ನಂತರ ಅದನ್ನು ನಿಯಮಗಳಲ್ಲಿ ಬಳಸಬಹುದು. ಎಸ್‌ಐಪಿಯ ಆಂತರಿಕ ಅಂಶಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡುವ ಅತ್ಯುತ್ತಮ ಸಾಧನವೆಂದರೆ ವಿಶ್ಲೇಷಕ sngrep (ಲಿಂಕ್) ಇದು ಜನಪ್ರಿಯ ವಿತರಣೆಗಳಲ್ಲಿ ಆಪ್ಟ್ ಇನ್‌ಸ್ಟಾಲ್/ಯಮ್ ಇನ್‌ಸ್ಟಾಲ್ ಮತ್ತು ಮುಂತಾದವುಗಳ ಮೂಲಕ ಸರಳವಾಗಿ ಸ್ಥಾಪಿಸಲ್ಪಡುತ್ತದೆ, ಆದರೆ ಇದನ್ನು ಮೂಲದಿಂದ ನಿರ್ಮಿಸಬಹುದು. sngrep ನಲ್ಲಿ ಕರೆ ಲಾಗ್ ಅನ್ನು ನೋಡೋಣ

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಸರಳೀಕೃತ ರೂಪದಲ್ಲಿ, ಡಯಲ್‌ಪ್ಲಾನ್ ಮೊದಲ ಪ್ಯಾಕೆಟ್‌ನೊಂದಿಗೆ ಮಾತ್ರ ವ್ಯವಹರಿಸುತ್ತದೆ, ಕೆಲವೊಮ್ಮೆ ಸಂಭಾಷಣೆಯ ಸಮಯದಲ್ಲಿ, ಕರೆಗಳನ್ನು ವರ್ಗಾಯಿಸಲಾಗುತ್ತದೆ, ಬಟನ್ ಪ್ರೆಸ್‌ಗಳು (DTMF), FollowMe, RingGroup, IVR ಮತ್ತು ಇತರವುಗಳಂತಹ ವಿವಿಧ ಆಸಕ್ತಿದಾಯಕ ವಿಷಯಗಳು.

ಆಹ್ವಾನ ಪ್ಯಾಕ್‌ನಲ್ಲಿ ಏನಿದೆ

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ವಾಸ್ತವವಾಗಿ, ಅತ್ಯಂತ ಸರಳವಾದ ಡಯಲ್‌ಪ್ಲಾನ್‌ಗಳು ಮೊದಲ ಎರಡು ಕ್ಷೇತ್ರಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಸಂಪೂರ್ಣ ತರ್ಕವು DID ಮತ್ತು ಕಾಲರ್‌ಐಡಿ ಸುತ್ತ ಸುತ್ತುತ್ತದೆ. ಡಿಐಡಿ - ನಾವು ಎಲ್ಲಿ ಕರೆ ಮಾಡುತ್ತಿದ್ದೇವೆ, ಕಾಲರ್ಐಡಿ - ಯಾರು ಕರೆ ಮಾಡುತ್ತಿದ್ದಾರೆ.

ಆದರೆ ಎಲ್ಲಾ ನಂತರ, ನಾವು ಕಂಪನಿಯನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಒಂದು ಫೋನ್ ಅಲ್ಲ - ಇದರರ್ಥ PBX ನಗರ ಸಂಖ್ಯೆಗಳಲ್ಲಿ (ರಿಂಗ್ ಗ್ರೂಪ್), IVR (ಹಲೋ, ನೀವು ಕರೆ ಮಾಡಿದ್ದೀರಿ ... ಒತ್ತಿರಿ ಒಂದು ...), ಉತ್ತರಿಸುವ ಯಂತ್ರಗಳು ( ನುಡಿಗಟ್ಟುಗಳು), ಸಮಯ ಪರಿಸ್ಥಿತಿಗಳು, ಇತರ ಸಂಖ್ಯೆಗಳಿಗೆ ಅಥವಾ ಸೆಲ್‌ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವಿಕೆ (FollowMe, ಫಾರ್ವರ್ಡ್). ಇದರರ್ಥ ಯಾರು ಕರೆಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ ಮತ್ತು ಕರೆ ಬಂದಾಗ ಯಾರೊಂದಿಗೆ ಸಂಭಾಷಣೆ ನಡೆಸುತ್ತಾರೆ ಎಂಬುದನ್ನು ನಿಸ್ಸಂದಿಗ್ಧವಾಗಿ ನಿರ್ಧರಿಸುವುದು ತುಂಬಾ ಕಷ್ಟ. ನಮ್ಮ ಕ್ಲೈಂಟ್‌ಗಳ PBX ನಲ್ಲಿ ವಿಶಿಷ್ಟವಾದ ಕರೆಯ ಪ್ರಾರಂಭದ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಕರೆ ಯಶಸ್ವಿಯಾಗಿ PBX ಅನ್ನು ಪ್ರವೇಶಿಸಿದ ನಂತರ, ಅದು ವಿಭಿನ್ನ "ಸಂದರ್ಭಗಳಲ್ಲಿ" ಡಯಲ್‌ಪ್ಲಾನ್ ಮೂಲಕ ಚಲಿಸುತ್ತದೆ. ಆಸ್ಟರಿಸ್ಕ್‌ನ ದೃಷ್ಟಿಕೋನದಿಂದ ಸಂದರ್ಭವು ಒಂದು ಸಂಖ್ಯೆಯ ಆಜ್ಞೆಗಳ ಗುಂಪಾಗಿದೆ, ಪ್ರತಿಯೊಂದೂ ಡಯಲ್ ಮಾಡಿದ ಸಂಖ್ಯೆಯಿಂದ ಫಿಲ್ಟರ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ (ಇದನ್ನು ಎಕ್ಸ್‌ಟೆನ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಆರಂಭಿಕ ಹಂತದಲ್ಲಿ ಎಕ್ಸ್‌ಟೆನ್=ಡಿಐಡಿ ಬಾಹ್ಯ ಕರೆಗಾಗಿ). ಡಯಲ್‌ಪ್ಲಾನ್ ಸಾಲಿನಲ್ಲಿನ ಆಜ್ಞೆಗಳು ಯಾವುದಾದರೂ ಆಗಿರಬಹುದು - ಆಂತರಿಕ ಕಾರ್ಯಗಳು (ಉದಾಹರಣೆಗೆ, ಆಂತರಿಕ ಚಂದಾದಾರರನ್ನು ಕರೆ ಮಾಡಿ - Dial(), ಫೋನ್ ಕೆಳಗೆ ಇರಿಸಿ - Hangup()), ಷರತ್ತುಬದ್ಧ ನಿರ್ವಾಹಕರು (IF, ELSE, ExecIF ಮತ್ತು ಹಾಗೆ), ಈ ಸಂದರ್ಭದ ಇತರ ನಿಯಮಗಳಿಗೆ ಪರಿವರ್ತನೆ (Goto, GotoIF), ಫಂಕ್ಷನ್ ಕರೆ (ಗೋಸುಬ್, ಮ್ಯಾಕ್ರೋ) ರೂಪದಲ್ಲಿ ಇತರ ಸಂದರ್ಭಗಳಿಗೆ ಪರಿವರ್ತನೆ. ಪ್ರತ್ಯೇಕ ನಿರ್ದೇಶನ include имя_контекста, ಇದು ಮತ್ತೊಂದು ಸಂದರ್ಭದಿಂದ ಪ್ರಸ್ತುತ ಸಂದರ್ಭದ ಅಂತ್ಯಕ್ಕೆ ಆಜ್ಞೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ. ಸೇರಿವೆ ಮೂಲಕ ಒಳಗೊಂಡಿರುವ ಆಜ್ಞೆಗಳನ್ನು ಯಾವಾಗಲೂ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ после ಪ್ರಸ್ತುತ ಸಂದರ್ಭದ ಆಜ್ಞೆಗಳು.

FreePBX ನ ಸಂಪೂರ್ಣ ತರ್ಕವನ್ನು Gosub, Macro ಮತ್ತು ಹ್ಯಾಂಡ್ಲರ್ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳ ಮೂಲಕ ಸೇರಿಸುವ ಮತ್ತು ಕರೆಯುವ ಮೂಲಕ ವಿಭಿನ್ನ ಸಂದರ್ಭಗಳನ್ನು ಪರಸ್ಪರ ಸೇರಿಸುವುದರ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಒಳಬರುವ FreePBX ಕರೆಗಳ ಸಂದರ್ಭವನ್ನು ಪರಿಗಣಿಸಿ

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಕರೆಯು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಪ್ರತಿಯಾಗಿ ಎಲ್ಲಾ ಸಂದರ್ಭಗಳ ಮೂಲಕ ಹೋಗುತ್ತದೆ, ಪ್ರತಿ ಸಂದರ್ಭದಲ್ಲೂ ಮ್ಯಾಕ್ರೋಗಳು (ಮ್ಯಾಕ್ರೋ), ಫಂಕ್ಷನ್‌ಗಳು (ಗೋಸುಬ್) ಅಥವಾ ಕೇವಲ ಪರಿವರ್ತನೆಗಳು (ಗೋಟೊ) ನಂತಹ ಇತರ ಸಂದರ್ಭಗಳಿಗೆ ಕರೆಗಳು ಇರಬಹುದು, ಆದ್ದರಿಂದ ಕರೆಯಲ್ಪಡುವ ನಿಜವಾದ ಮರವು ಮಾತ್ರ ಲಾಗ್‌ಗಳಲ್ಲಿ ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು.

ವಿಶಿಷ್ಟವಾದ PBX ಗಾಗಿ ಒಂದು ವಿಶಿಷ್ಟವಾದ ಸೆಟಪ್ ರೇಖಾಚಿತ್ರವನ್ನು ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ. ಕರೆ ಮಾಡುವಾಗ, ಒಳಬರುವ ಮಾರ್ಗಗಳಲ್ಲಿ ಡಿಐಡಿಯನ್ನು ಹುಡುಕಲಾಗುತ್ತದೆ, ಅದಕ್ಕಾಗಿ ತಾತ್ಕಾಲಿಕ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ, ಎಲ್ಲವೂ ಕ್ರಮದಲ್ಲಿದ್ದರೆ, ಧ್ವನಿ ಮೆನುವನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ. ಅದರಿಂದ, ಬಟನ್ 1 ಅಥವಾ ಕಾಲಾವಧಿಯನ್ನು ಒತ್ತುವ ಮೂಲಕ, ಡಯಲಿಂಗ್ ಆಪರೇಟರ್‌ಗಳ ಗುಂಪಿಗೆ ನಿರ್ಗಮಿಸಿ. ಕರೆ ಮುಗಿದ ನಂತರ, ಹ್ಯಾಂಗ್‌ಪ್‌ಕಾಲ್ ಮ್ಯಾಕ್ರೋ ಅನ್ನು ಕರೆಯಲಾಗುತ್ತದೆ, ಅದರ ನಂತರ ವಿಶೇಷ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ (ಹ್ಯಾಂಗ್‌ಅಪ್ ಹ್ಯಾಂಡ್ಲರ್) ಡಯಲ್‌ಪ್ಲಾನ್‌ನಲ್ಲಿ ಏನನ್ನೂ ಮಾಡಲಾಗುವುದಿಲ್ಲ.

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ಈ ಕರೆ ಅಲ್ಗಾರಿದಮ್‌ನಲ್ಲಿ ನಾವು CRM ಗೆ ಕರೆ ಪ್ರಾರಂಭದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಎಲ್ಲಿ ಒದಗಿಸಬೇಕು, ಎಲ್ಲಿ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು, ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಎಲ್ಲಿ ಕೊನೆಗೊಳಿಸಬೇಕು ಮತ್ತು CRM ಗೆ ಕರೆ ಕುರಿತು ಮಾಹಿತಿಯೊಂದಿಗೆ ಅದನ್ನು ಕಳುಹಿಸಬೇಕು?

ಬಾಹ್ಯ ವ್ಯವಸ್ಥೆಗಳೊಂದಿಗೆ ಏಕೀಕರಣ

PBX ಮತ್ತು CRM ಏಕೀಕರಣ ಎಂದರೇನು? ಇವುಗಳು ಈ ಎರಡು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳ ನಡುವೆ ಡೇಟಾ ಮತ್ತು ಈವೆಂಟ್‌ಗಳನ್ನು ಪರಿವರ್ತಿಸುವ ಮತ್ತು ಅವುಗಳನ್ನು ಪರಸ್ಪರ ಕಳುಹಿಸುವ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಪ್ರೋಗ್ರಾಂಗಳಾಗಿವೆ. ಸ್ವತಂತ್ರ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸಂವಹನ ನಡೆಸಲು API ಗಳ ಮೂಲಕ ಸಾಮಾನ್ಯ ಮಾರ್ಗವಾಗಿದೆ ಮತ್ತು API ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಮಾರ್ಗವೆಂದರೆ HTTP REST. ಆದರೆ ನಕ್ಷತ್ರ ಚಿಹ್ನೆಗಾಗಿ ಅಲ್ಲ.

ನಕ್ಷತ್ರ ಚಿಹ್ನೆಯ ಒಳಗೆ:

  • AGI - ಬಾಹ್ಯ ಪ್ರೋಗ್ರಾಂಗಳು / ಘಟಕಗಳಿಗೆ ಸಿಂಕ್ರೊನಸ್ ಕರೆ, ಮುಖ್ಯವಾಗಿ ಡಯಲ್‌ಪ್ಲಾನ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಲೈಬ್ರರಿಗಳಿವೆ phpagi, PAGI

  • AMI - ಈವೆಂಟ್‌ಗಳಿಗೆ ಚಂದಾದಾರರಾಗುವ ಮತ್ತು ಪಠ್ಯ ಆಜ್ಞೆಗಳನ್ನು ನಮೂದಿಸುವ ತತ್ವದ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪಠ್ಯ TCP ಸಾಕೆಟ್, ಒಳಗಿನಿಂದ SMTP ಯನ್ನು ಹೋಲುತ್ತದೆ, ಈವೆಂಟ್‌ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು ಮತ್ತು ಕರೆಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಲೈಬ್ರರಿ ಇದೆ ಪಾಮಿ - ನಕ್ಷತ್ರ ಚಿಹ್ನೆಯೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಲು ಅತ್ಯಂತ ಜನಪ್ರಿಯವಾಗಿದೆ

AMI ಔಟ್ಪುಟ್ ಉದಾಹರಣೆ

ಈವೆಂಟ್: ಹೊಸ ಚಾನಲ್
ಸವಲತ್ತು: ಕರೆ, ಎಲ್ಲಾ
ಚಾನಲ್: PJSIP/VMS_pjsip-0000078b
ಚಾನೆಲ್ ಸ್ಟೇಟ್: 4
ChannelStateDesc: ರಿಂಗ್
ಕರೆ ಮಾಡಿದವರ IDNum: 111222
ಕರೆ ಮಾಡಿದವರ ID ಹೆಸರು: 111222
ConnectedLineNum:
ಸಂಪರ್ಕಿತ ಸಾಲಿನ ಹೆಸರು:
ಭಾಷೆ: en
ಖಾತೆ ಕೋಡ್:
ಸಂದರ್ಭ: ರಿಂದ-pstn
ವಿಸ್ತರಣೆ: ರು
ಆದ್ಯತೆ: 1
ಅನನ್ಯ: 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″, "state":"ರಿಂಗ್", "ಕಾಲರ್":{ "name":"111222″, "number":"111222″ }, "ಸಂಪರ್ಕಿಸಲಾಗಿದೆ":{ "name":"", "number" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appಹೆಸರು":"ನಿಶ್ಚಲತೆ", "ಅಪ್ಲಿಕೇಶನ್ಡೇಟಾ":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "ಭಾಷೆ":"en" }, "ನಕ್ಷತ್ರ ಚಿಹ್ನೆid":"48:5b:aa:aa:aa:aa", "ಅಪ್ಲಿಕೇಶನ್":"ಹಲೋ-ವರ್ಲ್ಡ್" }

ಅನುಕೂಲತೆ ಅಥವಾ ಅನಾನುಕೂಲತೆ, ನಿರ್ದಿಷ್ಟ API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಸಾಧ್ಯತೆ ಅಥವಾ ಅಸಾಧ್ಯತೆಯನ್ನು ಪರಿಹರಿಸಬೇಕಾದ ಕಾರ್ಯಗಳಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. CRM ನೊಂದಿಗೆ ಏಕೀಕರಣದ ಕಾರ್ಯಗಳು ಈ ಕೆಳಗಿನಂತಿವೆ:

  • ಕರೆಯ ಪ್ರಾರಂಭವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ, ಅದನ್ನು ಎಲ್ಲಿ ವರ್ಗಾಯಿಸಲಾಗಿದೆ, ಕಾಲರ್‌ಐಡಿ, ಡಿಐಡಿ, ಪ್ರಾರಂಭ ಮತ್ತು ಅಂತಿಮ ಸಮಯಗಳನ್ನು ಹೊರತೆಗೆಯಿರಿ, ಬಹುಶಃ ಡೈರೆಕ್ಟರಿಯಿಂದ ಡೇಟಾ (ಫೋನ್ ಮತ್ತು ಸಿಆರ್‌ಎಂ ಬಳಕೆದಾರರ ನಡುವೆ ಸಂಪರ್ಕವನ್ನು ಹುಡುಕಲು)

  • ಕರೆ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಕೊನೆಗೊಳಿಸಿ, ಅದನ್ನು ಬಯಸಿದ ಸ್ವರೂಪದಲ್ಲಿ ಉಳಿಸಿ, ಫೈಲ್ ಇರುವ ರೆಕಾರ್ಡಿಂಗ್ ಕೊನೆಯಲ್ಲಿ ತಿಳಿಸಿ

  • ಬಾಹ್ಯ ಈವೆಂಟ್‌ನಲ್ಲಿ (ಪ್ರೋಗ್ರಾಂನಿಂದ) ಕರೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ, ಆಂತರಿಕ ಸಂಖ್ಯೆ, ಬಾಹ್ಯ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಿ ಮತ್ತು ಅವುಗಳನ್ನು ಸಂಪರ್ಕಿಸಿ

  • ಐಚ್ al ಿಕ: ಸ್ಥಳದ ಅನುಪಸ್ಥಿತಿಯಲ್ಲಿ ಕರೆಗಳ ಸ್ವಯಂಚಾಲಿತ ವರ್ಗಾವಣೆಗಾಗಿ CRM, ಡಯಲರ್ ಗುಂಪುಗಳು ಮತ್ತು FollowME ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ (CRM ಪ್ರಕಾರ)

ಈ ಎಲ್ಲಾ ಕಾರ್ಯಗಳನ್ನು AMI ಅಥವಾ ARI ಮೂಲಕ ಪರಿಹರಿಸಬಹುದು, ಆದರೆ ARI ಕಡಿಮೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಹೆಚ್ಚಿನ ಘಟನೆಗಳಿಲ್ಲ, AMI ಇನ್ನೂ ಹೊಂದಿರುವ ಅನೇಕ ವೇರಿಯೇಬಲ್‌ಗಳು (ಉದಾಹರಣೆಗೆ, ಮ್ಯಾಕ್ರೋ ಕರೆಗಳು, ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಹೊಂದಿಸುವುದು, ಕರೆ ರೆಕಾರ್ಡಿಂಗ್ ಸೇರಿದಂತೆ) ಟ್ರ್ಯಾಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ಸರಿಯಾದ ಮತ್ತು ನಿಖರವಾದ ಟ್ರ್ಯಾಕಿಂಗ್ಗಾಗಿ, ಇದೀಗ AMI ಅನ್ನು ಆಯ್ಕೆ ಮಾಡೋಣ (ಆದರೆ ಸಂಪೂರ್ಣವಾಗಿ ಅಲ್ಲ). ಹೆಚ್ಚುವರಿಯಾಗಿ (ಅಲ್ಲದೆ, ಅದು ಎಲ್ಲಿದೆ, ನಾವು ಸೋಮಾರಿಗಳು) - ಮೂಲ ಕೃತಿಯಲ್ಲಿ (habr ನಲ್ಲಿ ಲೇಖನ) PAMI ಬಳಸಿ. *ನಂತರ ನೀವು ARI ಗೆ ಪುನಃ ಬರೆಯಲು ಪ್ರಯತ್ನಿಸಬೇಕು, ಆದರೆ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬ ಅಂಶವಲ್ಲ.

ಏಕೀಕರಣವನ್ನು ಮರುಶೋಧಿಸುವುದು

ನಮ್ಮ FreePBX ಕರೆಯ ಪ್ರಾರಂಭ, ಅಂತಿಮ ಸಮಯ, ಸಂಖ್ಯೆಗಳು, ರೆಕಾರ್ಡ್ ಮಾಡಿದ ಫೈಲ್‌ಗಳ ಹೆಸರುಗಳ ಬಗ್ಗೆ ಸರಳ ರೀತಿಯಲ್ಲಿ AMI ಗೆ ವರದಿ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವಂತೆ, ಮೂಲ ಲೇಖಕರಂತೆಯೇ ಅದೇ ತಂತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ಕರೆಯ ಅವಧಿಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಸುಲಭವಾಗಿದೆ. - ನಿಮ್ಮ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ಅವುಗಳ ಉಪಸ್ಥಿತಿಗಾಗಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಿ. ಫಿಲ್ಟರ್ ಕಾರ್ಯದ ಮೂಲಕ ಇದನ್ನು ಸರಳವಾಗಿ ಮಾಡುವಂತೆ PAMI ಸೂಚಿಸುತ್ತದೆ.

ಕರೆಯ ಪ್ರಾರಂಭದ ಸಮಯಕ್ಕೆ ನಿಮ್ಮ ಸ್ವಂತ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸುವ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ (ಗಳು ಡಿಐಡಿ ಹುಡುಕಾಟವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ನಿರ್ವಹಿಸಲಾದ ಡಯಲ್‌ಪ್ಲಾನ್‌ನಲ್ಲಿನ ವಿಶೇಷ ಸಂಖ್ಯೆ)

[ext-did-custom]

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

ಈ ಸಾಲಿಗೆ ಉದಾಹರಣೆ AMI ಈವೆಂಟ್

ಈವೆಂಟ್: ಹೊಸ ಚಾನಲ್

ಸವಲತ್ತು: ಕರೆ, ಎಲ್ಲಾ

ಚಾನಲ್: PJSIP/VMS_pjsip-0000078b

ಚಾನೆಲ್ ಸ್ಟೇಟ್: 4

ChannelStateDesc: ರಿಂಗ್

ಕರೆ ಮಾಡಿದವರ IDNum: 111222

ಕರೆ ಮಾಡಿದವರ ID ಹೆಸರು: 111222

ConnectedLineNum:

ಸಂಪರ್ಕಿತ ಸಾಲಿನ ಹೆಸರು:

ಭಾಷೆ: en

ಖಾತೆ ಕೋಡ್:

ಸಂದರ್ಭ: ರಿಂದ-pstn

ವಿಸ್ತರಣೆ: ರು

ಆದ್ಯತೆ: 1

ಅನನ್ಯ: 1599589046.5244

ಲಿಂಕ್ಡಿಡ್: 1599589046.5244

ಅಪ್ಲಿಕೇಶನ್: AppData ಹೊಂದಿಸಿ:

ಕಾಲ್‌ಸ್ಟಾರ್ಟ್=1599571046

ಏಕೆಂದರೆ FreePBX ವಿಸ್ತಾರ.conf ಮತ್ತು ವಿಸ್ತಾರ_ ಫೈಲ್‌ಗಳನ್ನು ತಿದ್ದಿ ಬರೆಯುತ್ತದೆಹೆಚ್ಚುವರಿ.conf, ನಾವು ಫೈಲ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ ವಿಸ್ತರಣೆ_ಕಸ್ಟಮ್.ಕಾನ್ಫ್

ವಿಸ್ತಾರ_ಕಸ್ಟಮ್.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

ಮೂಲ ಲೇಖನದ ಲೇಖಕರ ಮೂಲ ಡಯಲ್‌ಪ್ಲಾನ್‌ನಿಂದ ವೈಶಿಷ್ಟ್ಯ ಮತ್ತು ವ್ಯತ್ಯಾಸ -

  • FreePBX ಬಯಸಿದಂತೆ .conf ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಡಯಲ್‌ಪ್ಲಾನ್ ಮಾಡಿ (ಹೌದು, ಇದು .ael ಮಾಡಬಹುದು, ಆದರೆ ಎಲ್ಲಾ ಆವೃತ್ತಿಗಳು ಅಲ್ಲ ಮತ್ತು ಇದು ಯಾವಾಗಲೂ ಅನುಕೂಲಕರವಾಗಿರುವುದಿಲ್ಲ)

  • exten=>h ಮೂಲಕ ಅಂತ್ಯವನ್ನು ಸಂಸ್ಕರಿಸುವ ಬದಲು, hangup_handler ಮೂಲಕ ಸಂಸ್ಕರಣೆಯನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು, ಏಕೆಂದರೆ FreePBX ಡಯಲ್‌ಪ್ಲಾನ್ ಅದರೊಂದಿಗೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

  • ಸ್ಥಿರ ಸ್ಕ್ರಿಪ್ಟ್ ಕರೆ ಸ್ಟ್ರಿಂಗ್, ಸೇರಿಸಲಾದ ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಬಾಹ್ಯ ಕರೆ ಸಂಖ್ಯೆ ExtNum

  • ಸಂಸ್ಕರಣೆಯನ್ನು _ಕಸ್ಟಮ್ ಸಂದರ್ಭಗಳಿಗೆ ಸರಿಸಲಾಗಿದೆ ಮತ್ತು FreePBX ಸಂರಚನೆಗಳನ್ನು ಸ್ಪರ್ಶಿಸದಿರಲು ಅಥವಾ ಸಂಪಾದಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ - [ ಮೂಲಕ ಒಳಬರುವಎಕ್ಸ್ಟ್-ಡಿಡ್-ಕಸ್ಟಮ್], ಹೊರಹೋಗುವ ಮೂಲಕ [ಹೊರಹೋಗುವ-ಎಲ್ಲಾ ಮಾರ್ಗಗಳು-ಕಸ್ಟಮ್]

  • ಸಂಖ್ಯೆಗಳಿಗೆ ಬೈಂಡಿಂಗ್ ಇಲ್ಲ - ಫೈಲ್ ಸಾರ್ವತ್ರಿಕವಾಗಿದೆ ಮತ್ತು ಸರ್ವರ್‌ಗೆ ಮಾರ್ಗ ಮತ್ತು ಲಿಂಕ್‌ಗಾಗಿ ಮಾತ್ರ ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ

ಪ್ರಾರಂಭಿಸಲು, ನೀವು ಲಾಗಿನ್ ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್ ಮೂಲಕ 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 ನಲ್ಲಿ ಇರಿಸಬೇಕು, ನಂತರ configs ಅನ್ನು ಮರು-ಓದಿ (ಅಥವಾ ನಕ್ಷತ್ರ ಚಿಹ್ನೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ)

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

ಈಗ PHP ಗೆ ಹೋಗೋಣ

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಮತ್ತು ಸೇವೆಯನ್ನು ರಚಿಸುವುದು

AMI ಗಾಗಿ ಸೇವೆಯಾದ Bitrix 24 ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯೋಜನೆಯು ಸಂಪೂರ್ಣವಾಗಿ ಸರಳ ಮತ್ತು ಪಾರದರ್ಶಕವಾಗಿಲ್ಲದ ಕಾರಣ, ಅದನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಚರ್ಚಿಸಬೇಕು. ನಕ್ಷತ್ರ ಚಿಹ್ನೆ, AMI ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಪೋರ್ಟ್ ಅನ್ನು ಸರಳವಾಗಿ ತೆರೆಯುತ್ತದೆ ಮತ್ತು ಅದು ಇಲ್ಲಿದೆ. ಕ್ಲೈಂಟ್ ಸೇರಿದಾಗ, ಅದು ದೃಢೀಕರಣವನ್ನು ವಿನಂತಿಸುತ್ತದೆ, ನಂತರ ಕ್ಲೈಂಟ್ ಅಗತ್ಯ ಘಟನೆಗಳಿಗೆ ಚಂದಾದಾರರಾಗುತ್ತಾರೆ. ಈವೆಂಟ್‌ಗಳು ಸರಳ ಪಠ್ಯದಲ್ಲಿ ಬರುತ್ತವೆ, ಇದು PAMI ರಚನಾತ್ಮಕ ವಸ್ತುಗಳಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ಆಸಕ್ತಿಯ ಘಟನೆಗಳು, ಕ್ಷೇತ್ರಗಳು, ಸಂಖ್ಯೆಗಳು ಇತ್ಯಾದಿಗಳಿಗೆ ಮಾತ್ರ ಫಿಲ್ಟರಿಂಗ್ ಕಾರ್ಯವನ್ನು ಹೊಂದಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಕರೆ ಬಂದ ತಕ್ಷಣ, ನ್ಯೂಎಕ್ಸ್‌ಟನ್ ಈವೆಂಟ್ ಅನ್ನು ಪೋಷಕ [ಇಂದ-pstn] ಸಂದರ್ಭದಿಂದ ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ, ನಂತರ ಎಲ್ಲಾ ಈವೆಂಟ್‌ಗಳು ಸನ್ನಿವೇಶಗಳಲ್ಲಿನ ಸಾಲುಗಳ ಕ್ರಮದಲ್ಲಿ ಹೋಗುತ್ತವೆ. _custom ಡಯಲ್‌ಪ್ಲಾನ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ CallMeCallerIDName ಮತ್ತು CallStart ವೇರಿಯೇಬಲ್‌ಗಳಿಂದ ಮಾಹಿತಿಯನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ,

  1. ಕರೆ ಬಂದಿರುವ ವಿಸ್ತರಣೆ ಸಂಖ್ಯೆಗೆ ಅನುಗುಣವಾದ UserID ಯನ್ನು ವಿನಂತಿಸುವ ಕಾರ್ಯ. ಇದು ಡಯಲ್-ಅಪ್ ಗುಂಪಾಗಿದ್ದರೆ ಏನು? ಪ್ರಶ್ನೆಯು ರಾಜಕೀಯವಾಗಿದೆ, ಎಲ್ಲರಿಗೂ ಒಂದೇ ಬಾರಿಗೆ ಕರೆಯನ್ನು ರಚಿಸುವುದು ಅಗತ್ಯವೇ (ಎಲ್ಲರೂ ಒಮ್ಮೆ ಕರೆ ಮಾಡಿದಾಗ) ಅಥವಾ ಪ್ರತಿಯಾಗಿ ಕರೆ ಮಾಡುವಾಗ ಅವರು ಕರೆದಂತೆ ರಚಿಸುವುದು ಅಗತ್ಯವೇ? ಹೆಚ್ಚಿನ ಗ್ರಾಹಕರು Fisrt ಲಭ್ಯವಿರುವ ತಂತ್ರವನ್ನು ಹೊಂದಿದ್ದಾರೆ, ಆದ್ದರಿಂದ ಇದರಲ್ಲಿ ಯಾವುದೇ ಸಮಸ್ಯೆ ಇಲ್ಲ, ಕೇವಲ ಒಂದು ಕರೆಗಳು. ಆದರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಬೇಕಾಗಿದೆ.

  2. Bitrix24 ನಲ್ಲಿ ಕರೆ ನೋಂದಣಿ ಕಾರ್ಯ, ಇದು CallID ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ನಂತರ ಕರೆ ನಿಯತಾಂಕಗಳನ್ನು ಮತ್ತು ರೆಕಾರ್ಡಿಂಗ್‌ಗೆ ಲಿಂಕ್ ಅನ್ನು ವರದಿ ಮಾಡಲು ಇದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. ವಿಸ್ತರಣೆ ಸಂಖ್ಯೆ ಅಥವಾ ಬಳಕೆದಾರ ಐಡಿ ಅಗತ್ಯವಿದೆ

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

ಅಗತ್ಯವಿರುವಂತೆ ಸೇವೆಯು ಪುನರಾರಂಭಗೊಳ್ಳುತ್ತದೆ (ಕ್ರ್ಯಾಶ್‌ಗಳ ಸಂದರ್ಭದಲ್ಲಿ). ಇನ್‌ಬಾಕ್ಸ್ ಟ್ರ್ಯಾಕಿಂಗ್ ಸೇವೆಗೆ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಅಗತ್ಯವಿಲ್ಲ, ಕೇವಲ php ಅಗತ್ಯವಿದೆ (ಇದು ಖಂಡಿತವಾಗಿಯೂ FeePBX ಸರ್ವರ್‌ನಲ್ಲಿದೆ). ಆದರೆ ವೆಬ್ ಸರ್ವರ್ ಮೂಲಕ ಕರೆ ದಾಖಲೆಗಳಿಗೆ ಪ್ರವೇಶದ ಅನುಪಸ್ಥಿತಿಯಲ್ಲಿ (https ಜೊತೆಗೆ), ಕರೆ ದಾಖಲೆಗಳನ್ನು ಕೇಳಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.

ಈಗ ಹೊರಹೋಗುವ ಕರೆಗಳ ಬಗ್ಗೆ ಮಾತನಾಡೋಣ. CallMeOut.php ಸ್ಕ್ರಿಪ್ಟ್ ಎರಡು ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿದೆ:

  • php ಸ್ಕ್ರಿಪ್ಟ್‌ಗಾಗಿ ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ಕರೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವುದು (ಬಿಟ್ರಿಕ್ಸ್‌ನಲ್ಲಿಯೇ "ಕಾಲ್" ಬಟನ್ ಅನ್ನು ಬಳಸುವುದು ಸೇರಿದಂತೆ). ಇದು ವೆಬ್ ಸರ್ವರ್ ಇಲ್ಲದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ, ವಿನಂತಿಯನ್ನು HTTP POST ಮೂಲಕ ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ, ವಿನಂತಿಯು ಟೋಕನ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ

  • ಬಿಟ್ರಿಕ್ಸ್‌ನಲ್ಲಿ ಕರೆ, ಅದರ ನಿಯತಾಂಕಗಳು ಮತ್ತು ದಾಖಲೆಗಳ ಕುರಿತು ಸಂದೇಶ. ಕರೆ ಕೊನೆಗೊಂಡಾಗ [ಉಪ-ಕರೆ-ಆಂತರಿಕ-ಅಂತ್ಯ] ಡಯಲ್‌ಪ್ಲಾನ್‌ನಲ್ಲಿ ಆಸ್ಟರಿಸ್ಕ್‌ನಿಂದ ಹಾರಿಸಲಾಗಿದೆ

FreePBX ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು Bitrix24 ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು

ವೆಬ್ ಸರ್ವರ್ ಎರಡು ವಿಷಯಗಳಿಗೆ ಮಾತ್ರ ಅಗತ್ಯವಿದೆ - Bitrix ರೆಕಾರ್ಡ್ ಫೈಲ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದು (HTTPS ಮೂಲಕ) ಮತ್ತು CallMeOut.php ಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಕರೆ ಮಾಡುವುದು. ನೀವು ಅಂತರ್ನಿರ್ಮಿತ FreePBX ಸರ್ವರ್ ಅನ್ನು ಬಳಸಬಹುದು, ಇವುಗಳಿಗಾಗಿ ಫೈಲ್‌ಗಳು /var/www/html, ನೀವು ಇನ್ನೊಂದು ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬಹುದು ಅಥವಾ ಬೇರೆ ಮಾರ್ಗವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು.

ವೆಬ್ ಸರ್ವರ್

ಸ್ವತಂತ್ರ ಅಧ್ಯಯನಕ್ಕಾಗಿ ವೆಬ್ ಸರ್ವರ್ ಸೆಟಪ್ ಅನ್ನು ಬಿಡೋಣ (ಟೈಟ್ಸ್, ಟೈಟ್ಸ್, ಟೈಟ್ಸ್) ನೀವು ಡೊಮೇನ್ ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ನೀವು FreeDomain ಅನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು( https://www.freenom.com/ru/index.html), ಇದು ನಿಮ್ಮ ಬಿಳಿ IP ಗಾಗಿ ನಿಮಗೆ ಉಚಿತ ಹೆಸರನ್ನು ನೀಡುತ್ತದೆ (ಬಾಹ್ಯ ವಿಳಾಸವು ಅದರ ಮೇಲೆ ಮಾತ್ರ ಇದ್ದಲ್ಲಿ ರೂಟರ್ ಮೂಲಕ ಪೋರ್ಟ್‌ಗಳು 80, 443 ಅನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡಲು ಮರೆಯಬೇಡಿ). ನೀವು ಈಗಷ್ಟೇ DNS ಡೊಮೇನ್ ಅನ್ನು ರಚಿಸಿದ್ದರೆ, ಎಲ್ಲಾ ಸರ್ವರ್‌ಗಳು ಲೋಡ್ ಆಗುವವರೆಗೆ ನೀವು (15 ನಿಮಿಷದಿಂದ 48 ಗಂಟೆಗಳವರೆಗೆ) ಕಾಯಬೇಕಾಗುತ್ತದೆ. ದೇಶೀಯ ಪೂರೈಕೆದಾರರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅನುಭವದ ಪ್ರಕಾರ - 1 ಗಂಟೆಯಿಂದ ದಿನಕ್ಕೆ.

ಅನುಸ್ಥಾಪನ ಯಾಂತ್ರೀಕೃತಗೊಂಡ

ಅನುಸ್ಥಾಪನೆಯನ್ನು ಇನ್ನಷ್ಟು ಸುಲಭಗೊಳಿಸಲು ಗಿಥಬ್‌ನಲ್ಲಿ ಅನುಸ್ಥಾಪಕವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಆದರೆ ಅದು ಕಾಗದದ ಮೇಲೆ ಸುಗಮವಾಗಿತ್ತು - ನಾವು ಎಲ್ಲವನ್ನೂ ಕೈಯಾರೆ ಸ್ಥಾಪಿಸುವಾಗ, ಇವೆಲ್ಲವನ್ನೂ ಮಾಡಿದ ನಂತರ ಯಾರೊಂದಿಗೆ ಸ್ನೇಹಿತರು ಏನು, ಯಾರು ಎಲ್ಲಿಗೆ ಹೋಗುತ್ತಾರೆ ಮತ್ತು ಹೇಗೆ ಡೀಬಗ್ ಮಾಡುವುದು ಎಂಬುದು ಸ್ಫಟಿಕ ಸ್ಪಷ್ಟವಾಯಿತು. ಇನ್ನೂ ಯಾವುದೇ ಅನುಸ್ಥಾಪಕವಿಲ್ಲ

ಡಾಕರ್

ನೀವು ಪರಿಹಾರವನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರಯತ್ನಿಸಲು ಬಯಸಿದರೆ - ಡಾಕರ್‌ನೊಂದಿಗೆ ಒಂದು ಆಯ್ಕೆ ಇದೆ - ತ್ವರಿತವಾಗಿ ಧಾರಕವನ್ನು ರಚಿಸಿ, ಹೊರಗೆ ಪೋರ್ಟ್‌ಗಳನ್ನು ನೀಡಿ, ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಫೈಲ್‌ಗಳನ್ನು ಸ್ಲಿಪ್ ಮಾಡಿ ಮತ್ತು ಪ್ರಯತ್ನಿಸಿ (ಇದು LetsEncrypt ಕಂಟೇನರ್‌ನೊಂದಿಗೆ ಆಯ್ಕೆಯಾಗಿದೆ, ನೀವು ಈಗಾಗಲೇ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಫ್ರೀಪಿಬಿಎಕ್ಸ್ ವೆಬ್ ಸರ್ವರ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುವ ಅಗತ್ಯವಿದೆ (ನಾವು ಅದಕ್ಕೆ ಮತ್ತೊಂದು ಪೋರ್ಟ್ 88 ಎಂದು ನೀಡಿದ್ದೇವೆ), ಡಾಕರ್‌ನಲ್ಲಿ ಲೆಟ್ಸ್‌ಎನ್‌ಕ್ರಿಪ್ಟ್ ಆಧರಿಸಿ ಈ ಲೇಖನದ

ನೀವು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಪ್ರಾಜೆಕ್ಟ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ (ಜಿಟ್ ಕ್ಲೋನ್ ನಂತರ) ಫೈಲ್ ಅನ್ನು ರನ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಆದರೆ ಮೊದಲು ನಕ್ಷತ್ರ ಚಿಹ್ನೆಯ ಸಂರಚನೆಗಳಿಗೆ (ನಕ್ಷತ್ರ ಚಿಹ್ನೆ ಫೋಲ್ಡರ್) ಪ್ರವೇಶಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಸೈಟ್‌ನ ದಾಖಲೆಗಳು ಮತ್ತು 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:

ಈ ಡಾಕರ್-compose.yaml ಫೈಲ್ ಅನ್ನು ಇದರ ಮೂಲಕ ರನ್ ಮಾಡಲಾಗುತ್ತದೆ

docker-compose up -d

nginx ಪ್ರಾರಂಭವಾಗದಿದ್ದರೆ, nginx/ssl_docker.conf ಫೋಲ್ಡರ್‌ನಲ್ಲಿನ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಏನೋ ತಪ್ಪಾಗಿದೆ

ಇತರ ಏಕೀಕರಣಗಳು

ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಕೆಲವು CRM ಅನ್ನು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಏಕೆ ಹಾಕಬಾರದು ಎಂದು ನಾವು ಯೋಚಿಸಿದ್ದೇವೆ. ನಾವು ಹಲವಾರು ಇತರ CRM API ಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಿದ್ದೇವೆ, ವಿಶೇಷವಾಗಿ ಉಚಿತ ಅಂತರ್ನಿರ್ಮಿತ PBX - ShugarCRM ಮತ್ತು Vtiger, ಮತ್ತು ಹೌದು! ಹೌದು, ತತ್ವವು ಒಂದೇ ಆಗಿರುತ್ತದೆ. ಆದರೆ ಇದು ಇನ್ನೊಂದು ಕಥೆ, ಇದನ್ನು ನಾವು ನಂತರ ಪ್ರತ್ಯೇಕವಾಗಿ ಗಿಥಬ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುತ್ತೇವೆ.

ಉಲ್ಲೇಖಗಳು

ಹಕ್ಕುತ್ಯಾಗ: ವಾಸ್ತವಕ್ಕೆ ಯಾವುದೇ ಹೋಲಿಕೆಯು ಕಾಲ್ಪನಿಕವಾಗಿದೆ ಮತ್ತು ಅದು ನಾನಲ್ಲ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ