なぜチャットボット、たたはBitrix24のストヌリヌが必芁なのか

ファン甚のボットを䜜成しおチャットする堎合を陀き、Microsoft Bot Frameworkを䜿甚できる理由ず、自然界のプロゞェクトでチャットボットを䜿甚する実際のケヌスがあるかどうかがよく聞かれたす。 だから、圌らは存圚したす。 パヌトナヌの1぀であるBitrix24に、ボットをプロゞェクトに統合した経隓ず技術的な詳现を共有するように䟝頌したした。 システムの開発者であるSergey Pokoevに話を聞きたす。SergeyPokoevは、そのアヌキテクチャず、Skypeに接続するためのBot Frameworkの䜿甚に぀いお説明したす。



背景


䌚瀟ず顧客ずのコミュニケヌションは長い間倉化しおきたした。電子メヌルや電話に眮き換わり、最初に゜ヌシャルネットワヌク、次にメッセンゞャヌが登堎したした。 同意しお、今でははるかに䟿利になりたした。そしお最も重芁なこずは、Facebook、VKontakte、What's App、たたはTelegramでサポヌトの質問をより速く尋ねるこずです。

豊富なチャンネルは玠晎らしい機䌚を提䟛するだけでなく、いく぀かの問題も生み出したす。


したがっお、倚くの䌁業は、デヌタの集玄を1か所で考えおいたす。これは、制埡ず管理が簡単です。 圌らのために、Bitrix24 *サヌビスにはOpen Linesツヌルがありたす。これに぀いおは以䞋で説明したす。

ずころで、 「チャットボットが必芁なのはなぜですか」ずいう倚くの心配の質問にすぐに答えたす。私たちの堎合、䜿甚は解決する必芁のあるタスクに䟝存したす。耇雑-カスタマヌサポヌトを自動化できたす。

*ヘルプ Bitrix24サヌビスは、䌚瀟の業務を敎理するためのむンタヌネットツヌルのセットです。 これには、タスクおよびプロゞェクト管理、オムニチャネルCRM、䌚瀟の内郚メッセンゞャヌ、ワヌキング゜ヌシャルネットワヌク、勀務時間管理、ドキュメント管理などの機胜が含たれたす。

仕組みナヌザヌビュヌ


クラむアントは、゜ヌシャルネットワヌクたたはむンスタントメッセンゞャヌで䌚瀟の公匏アカりントに曞き蟌みたす。 このメッセヌゞは、すべおのチャネルに共通の凊理キュヌに到着したす。 それから、メッセヌゞはBitrix24メッセンゞャヌ内で応答する埓業員間で配信されたす。 理解できるように、これは自動化されたプロセスであり、レスポンダヌにずっお、クラむアントが䜜成したチャネルに違いはありたせん。



仕組み開発者からの倖芳


Microsoft Bot Frameworkずの統合


Microsoft Bot Frameworkは、クラりドでむンテリゞェントなチャットボットを䜜成できる環境であり、SkypeやTelegramからSlackやSMSたで、さたざたな通信チャネルを介しお通信できたす。 プロキシずしおも䜿甚できたす。 これらのチャネルごずに個別に統合を実装する必芁がないため、これは䟿利です。

Microsoft Bot Frameworkずの統合のために、既存のOpen Lines䜜業スキヌムがいく぀かの改善ずずもに䜿甚されたした。

特別なコネクタサヌバヌを䜜成したした。 これは、゜ヌシャルネットワヌク、むンスタントメッセンゞャヌ、オンラむンチャット、サむト䞊のフォヌムなどの倖郚通信チャネルずBitrix24クラむアント間のリンクです。 サヌバヌの䞻な利点





Bitrix24クラむアントずコネクタサヌバヌ間のデヌタ亀換は、独自のプロトコルを䜿甚しお実行されたす。 この堎合、サヌバヌはルヌタヌずしお機胜し、着信デヌタず発信デヌタの予備凊理を行いたす。

サヌバヌ環境の芁件はBitrix24ず若干異なりたすPHP 5.4以降、MySql 5.5.3、InnoDB。

Bitrix24クラむアントずコネクタサヌバヌ間のデヌタ亀換䞭のオヌバヌヘッドを最小限に抑えるために、次のこずが決定されたした。


コネクタサヌバヌのメッセヌゞキュヌ


サヌバヌ䞊のメッセヌゞ送信キュヌは、MySQLに基づいお実装されおいたす。 珟圚、Redisのようなより掗緎された柔軟性のあるツヌルは必芁ありたせん。 デヌタベヌスベヌスのキュヌは、远加のオヌバヌヘッドを回避し、維持しやすく、珟圚の負荷に簡単に耐えるこずができたす。

ポヌタルがしばらく利甚できない堎合でも、キュヌはメッセヌゞ配信を保蚌したす。 着信メッセヌゞが凊理され、デヌタベヌスに配眮されたす。 別のプロセスがデヌタベヌス内のメッセヌゞを継続的に遞択しお送信したす。 同時に、耇数のメッセヌゞからパケットを圢成し、それらをポヌタルに送信したす。

配信確認がサヌバヌに到着しない堎合、この「Open Line」ぞのこのポヌタルぞの次の送信は、ブロック期間の終了埌にのみ行われたす。 各詊行の埌に、ロックの期間は増加したす。 最埌の詊行が倱敗した堎合、メッセヌゞの送信は12時間ブロックされたす。 合蚈で、ポヌタルぞのメッセヌゞ送信の最初の詊行から24時間になりたす。 最埌の詊行の埌、このOpen Lineのこのポヌタルのすべおのメッセヌゞが削陀され、ロックが解陀されたす。

サヌバヌが確認を受信するず、配信されたメッセヌゞはキュヌから削陀され、このオヌプン回線のブロックが解陀されたす。 ぀たり、新しいメッセヌゞはすぐにポヌタルに送信されたす。

コネクタサヌバヌのメカニズム


「ファクトリメ゜ッド」パタヌンを適甚しお、各通信チャネルを担圓するコヌドを敎理したした。 各コネクタがサポヌトするメ゜ッドの暙準セットを定矩したした。 さらに、各チャネルには独自のメ゜ッドを蚭定できたす。

チャネルを機胜させるには、ポヌタルで初期構成を実行する必芁がありたす。 ナヌザヌはそれを行い、ポヌタルは特別な方法を䜿甚しお接続を管理したす。 さたざたなタむプのコネクタの蚭定は、メ゜ッドのセットによっお倧きく異なりたす。 Microsoft Bot Frameworkは、単玔な構成オプションを䜿甚したす。 リモヌトのsaveSettingsメ゜ッドは、必芁なパラメヌタヌが枡されるポヌタルから呌び出されたす。 これらはデヌタベヌスに保存され、将来のチャネルの䜜業で䜿甚されたす。

次に、ポヌタルはリモヌトtestConnectコネクタヌtestConnect呌び出したす。このtestConnectは、指定されたデヌタずの接続を確認し、接続されたポヌタルの可甚性も確認したす。

Webhookは、Bot Frameworkサむトでボットを䜜成するずきに指定されたす。 ナヌザヌが蚭定するずきに必芁なアドレスを指定したす。

ポヌタル偎の構成むンタヌフェヌスは次のようになりたす。



初心者は、ステップバむステップのりィザヌドを䜿甚しお、新しいボットをすばやく登録できたす。

接続に成功するず、3぀のデヌタ構造でレコヌドを取埗したす。



サむトに関する情報を蚘録したす 。 重芁なパラメヌタヌはポヌタルドメむンです。 サヌバヌは特定の堎合にそれにアクセスしたす。

回線/コネクタレコヌドを開きたす 。 以䞋を明確に定矩したす。


特定のOpen Lineの特定のコネクタの接続パラメヌタの蚘録 。 コネクタの皮類によっお、パラメヌタのセットは倧きく異なる堎合がありたす。

Microsoft Bot Frameworkを䜿甚しおサヌバヌで盎接䜜業する


ボットフレヌムワヌクには、チャネルのセット党䜓が含たれおいたす。 そのため、「リアルチャネル」ず「仮想チャネル」の抂念を導入したした。 Botframeworkは、単䞀の連絡先を䜿甚するため、実際のチャネルです。 Botframework.skypeは、Microsoft Bot Frameworkを介しおSkypeボットずの䜜業を実装する仮想チャネルです。

コネクタが機胜するには

1.ボットの蚭定で、必芁なWebHookを指定したす。
2.「Bitrix24」のチャンネル蚭定で正しい蚭定を瀺したす。


WebHookのおかげで、コネクタサヌバヌはこのボットが接続されおいるオヌプンラむンを刀別したす。 バむンディングが芋぀からなかった堎合、゚ラヌが返されたす。

゚ラヌがない堎合、受信したデヌタを凊理したす。





すべおの倉換埌、メッセヌゞはメッセヌゞキュヌに远加されたす。

Bitrix24から倖郚メッセンゞャヌにメッセヌゞを送信するず、ある圢匏から別の圢匏ぞの逆倉換が実行されたす。 メッセヌゞは、POSTメ゜ッド/v3/conversations/{conversationId}/activitiesを䜿甚しお送信されたす。 送信に必芁なデヌタはすべおメッセヌゞに付属しおいたす。

この堎合、バむナリデヌタは送信されたせん。 すべおの添付ファむルはBitrix24.Diskに入れられ、リンクずしお送信されたす。 これにより、トラフィックが節玄されたす。 たた、必芁に応じお、い぀でもファむルぞのアクセスを閉じるこずができたす。

オヌプンラむンの仕組み


チャットは、゜ヌシャルネットワヌクたたはメッセンゞャヌのナヌザヌからのメッセヌゞで始たりたす。 単䞀の゚ントリポむントが䜿甚されたす。 これは、Open Lineハッシュを含むGETパラメヌタヌを持぀単䞀のURLです。 ハッシュを䜿甚しお、システムは着信メッセヌゞの送信先を決定したす。

接続の䞀意性


倖郚システムグルヌプ、ボットの同じ゚ッセンスを耇数のポヌタルたたは同じポヌタル内の異なるオヌプンラむンに接続しようずする堎合がありたす。 そのようなケヌスが凊理されない堎合、異垞な状況ず障害が発生する可胜性がありたす。 そのため、接続の䞀意性を確認するメカニズムを実装したした。

異なるチャネルの再接続の詊行は、異なる方法で定矩されたす。 Microsoft Bot Frameworkは、システム内の特定のボット識別子の存圚を確認したす。 珟圚の接続が唯䞀のものではない堎合繰り返し、通垞どおり機胜し続け、以前の接続のデヌタはサヌバヌから完党に削陀されたす。 同時に、リク゚ストがポヌタルに送信され、このOpen Lineコネクタに「緊急」のマヌクが付けられるため、管理者の泚意が必芁です。

Bitrix24のクラむアント郚分のメカニズム


コネクタのクラむアントモゞュヌルは次の目的で䜿甚されたす。


Open Linesモゞュヌルは、メッセヌゞのルヌティング、メッセヌゞキュヌの䜜成、オペレヌタヌやその他の機胜ぞの誘導を担圓したす。

クラむアントでのデヌタ亀換の実装


Open Linesモゞュヌルでは、 Outputクラスがサヌバヌぞのメッセヌゞの送信ず远加凊理を担圓したす。 queryメ゜ッドは、リモヌトサヌバヌぞの発信パケットを盎接圢成し、メッセヌゞに眲名したす。

Outputクラスは、「マゞック」メ゜ッドを䜿甚しお、リモヌトサヌバヌメ゜ッドをロヌカルであるかのように呌び出したす。 これには長所ず短所がありたす。

欠点 「マゞック」メ゜ッドの速床はわずかに遅くなりたす。 しかし、それらは倖郚システムでの䜜業に䜿甚されるため、遅延はそれほど顕著ではありたせん。

利点 内郚メ゜ッドず同様に倖郚メ゜ッドを䜿甚できたす。 ぀たり、開発者はロヌカルでリモヌトメ゜ッドを呌び出したす。 すべおの䜜業は暙準化されおいたす。 クラむアントにメ゜ッドのリストを保持する必芁はなく、このリストを同期する必芁もありたせん。 メ゜ッドをサヌバヌに远加するだけで十分であり、クラむアントで䜿甚できたす。

倖郚サヌバヌの䞀郚のメ゜ッドにはロヌカルラッパヌがありたす。 リク゚ストをリモヌトサヌバヌに送信する前に、さたざたなタスクを実行したす。 たずえば、リモヌトサヌバヌの負荷を軜枛するためにデヌタをキャッシュし、前凊理を行いたす。

すべおの着信芁求は、 Inputクラスによっお凊理されたす。 着信パケットを解析し、眲名芁求が実際にサヌバヌから送信されたものであるこずを怜蚌し、着信芁求をルヌティングするRouterクラスにデヌタをリダむレクトしたす。

着信リク゚ストの皮類


Bitrix24クラむアントによるメッセヌゞの受信


inputクラスは、ポヌタルから着信メッセヌゞメッセヌゞ配列を受け取り、凊理を開始したす。 メッセヌゞ配信通知がサヌバヌに送信されたす。 圌はそれらをキュヌから削陀し、メッセヌゞのさらなる送信のロックを解陀したす。



受信したメッセヌゞはさらに凊理されたす。 ショヌトネヌム絵文字は、Bitrix24メッセンゞャヌでサポヌトされおいる特別なiconタグに倉換されicon 。 これにより、利甚可胜なすべおの絵文字がサポヌトされたす。

すべおの添付ファむルが凊理されたす。 それらはダりンロヌドされ、内郚システムに登録されたす。 たた、ファむルを蚘述する配列では、ファむルぞのリンクが内郚IDに眮き換えられたす。

゜ヌシャルネットワヌクたたはメッセンゞャヌの倖郚ナヌザヌ甚に䜜成された内郚ナヌザヌのポヌタル䞊の存圚を確認したす。 そうでない堎合は、䜜成されたす。 ナヌザヌが存圚する堎合、ナヌザヌデヌタからのmd5ハッシュがチェックされたす。 受信したデヌタず比范され、ハッシュが異なる堎合、ナヌザヌデヌタが曎新されたす。 次に、受信した配列で、Bitrix24ポヌタル内のナヌザヌIDに眮き換えられたす。

このような倉換されたデヌタ配列は、生成されたOnReceivedMessageむベントに配眮されたす。 Open Linesモゞュヌルによっお「キャッチ」されたす。

発信リク゚スト「Bitrix24」


発信芁求は実際には凊理されたせん。 それらはリモヌトコネクタサヌバヌにルヌティングされたす。 Bot Frameworkの堎合、远加のハンドラヌがクラむアントで䜜成されたす。

このコネクタは、送信メッセヌゞで送信者に関する情報を送信する必芁があるずいう点で他のすべおのコネクタず異なりたす。 接続されたずきに送信されたせん。 しかし、入力で取埗できたす。 そのため、各チャットず各ダむアログに関するサポヌト情報を保存するために、個別のテヌブルが䜜成されおいたす。

このコネクタの着信メッセヌゞに぀いおは、必芁な情報を遞択しお保存するfurtherMessageProcessingメッセヌゞfurtherMessageProcessingメ゜ッドがfurtherMessageProcessingたす。 たた、Botframeworkチャネルにメッセヌゞを送信するずき、sendMessageProcessingメ゜ッドは必芁なデヌタを混合したす。

結論の代わりに


珟圚、ほずんどのBitrix24ナヌザヌは、Bot Frameworkチャネルを接続しお、Skypeを介しお芖聎者ず連携しおいたす。 蚘事の公開時点で、接続されおいるボットの数は9000です。

Source: https://habr.com/ru/post/J327258/


All Articles