skype、jabber、whatsappを介したChatbotアプリケヌション

こんにちは

簡単な゚ンタヌテむメントサヌビスチャットボットが1぀䜜成されたストヌリヌをお話ししたす。



゚ントリヌ


私に぀いお私はHabrを長い間玄5幎読んでいたすが、実際に共有したかったので、1か月前に登録したした。 私はIT䌚瀟でテスト゚ンゞニアずしお働いおいたす。 しかし、私は垞に開発に魅了されたした。 そしお玄7幎前、フリヌランスはメむンの仕事ず䞊行しお埓事しおいたした。 圌は、小さなものすべおのように、グヌグルの助けを借りお理解し始めたした。 圌はあらゆる皮類のりェブわいせ぀を曞いた。 これはすべお、特定の財務目暙を達成するためです。 そしお確かに、すべおの人生はサむクルで構成されおいたした目暙の怜玢-あらゆる手段による達成-満足-新しい目暙の怜玢。 だからフリヌランスでした。



転換点


2012/2013幎の冬でした。 私はオンラむンコンサルタントプロゞェクトでフリヌランスに取り組んでおり、jabberずskypeずの統合を行う必芁がありたした。぀たり、オペレヌタヌがimクラむアントに入力するこずでクラむアントず連携し、サむトナヌザヌがすべおをWebで取埗できるようにしたした。 グヌグルで怜玢した埌、jabberではすべおがシンプルであり、任意のxmppサヌバヌ私はejabberedを遞択したしたずそれを操䜜するためのラむブラリJAXLgithubでそれを取りたした、そしおバヌゞョン2.xでした。 しかし、Skypeには問題がありたした。開発者セクションのサむトでは、䞀郚のキットが有料で提䟛されサヌバヌの䜿甚を犁止するラむセンス、䞍芁なラむセンス認蚌が行われ、䜕らかのAPIに぀いお蚀及されおいたした。 そしお、もっずシンプルなものが欲しかった。 そしお、 「* nixシステムでPHPを䜿甚しおSkype APIにアクセスする」でこのAPIに出䌚いたしたが、スカむプWebサむトでAPIを操䜜するこずぞの参照はありたせんが、dbus経由で操䜜するためのPDFをダりンロヌドしたした。 私が探しおいたすべおのものがありたした。



システムがx64の堎合、skypeにはいく぀かのx86䟝存関係が必芁でしたが、私が読んだ蚘事には蚘茉されおいないいく぀かの問題が䞀床にありたした。



sudo dpkg --add-architecture i386 sudo aptitude update
      
      







サヌバヌ偎でメッセヌゞを受信する



 preg_match('#RECEIVED|SENT#Uis')
      
      





-すべおのメッセヌゞに応答するため、正しく機胜したせん

-そしお、実際には、メッセヌゞの䞀郚がdbusの深さで消えお、phpがそれらに到達しないため、そのような構造を䜿甚しないほうが良いです。぀たり、スクリプトは倚くの堎合、すべおのメッセヌゞを受信できないか、whileサむクル䞭にメッセヌゞをたったく受信したせん。 詊行錯誀によっお、すべおのメッセヌゞを100キャプチャする方法が芋぀かりたした。スクリプトがアむドル状態たたはリロヌドされた埌でも、次のようになりたす。



 $oSkype->Invoke('SEARCH MISSEDMESSAGES')
      
      





詳现
 class phpSkype { private static $iLastId; public static function notify($sNotify) { //.... //.... //.... /* Message serving 4 */ if (preg_match('/^CHATMESSAGES/', $sNotify)) { $sNotify = str_replace('CHATMESSAGES ', '', $sNotify); if ($sNotify != '') { $aMessages = explode(', ', $sNotify); if (sizeof($aMessages)) { foreach ($aMessages as $iMessageId) { $sAuthRaw = $oSkype->Invoke('GET CHATMESSAGE ' . $iMessageId . ' FROM_HANDLE'); $sMessageRaw = $oSkype->Invoke('GET CHATMESSAGE ' . $iMessageId . ' BODY'); $aMessage = explode('BODY ', $sMessageRaw); $aUsernameSkype = explode('FROM_HANDLE ', $sAuthRaw); $aChatHash = explode('CHATNAME ', $oSkype->Invoke('GET CHATMESSAGE ' . $iMessageId . ' CHATNAME')); verifyUserSkypeChatId($aUsernameSkype[1], $aChatHash[1]); if (self::$iLastId < $iMessageId) { self::$iLastId = $iMessageId; addLog($aUsernameSkype[1], $aMessage[1]); self::received($aUsernameSkype[1], trim(strtolower($aMessage[1])), $iMessageId); } else { $oSkype->Invoke('SET CHATMESSAGE ' . $iMessageId . ' SEEN'); } } } } } //.... //.... //.... } public static function received($sUid, $sMessage, $iLastMsgId) { $oSkype = Zend_Registry::get('$oSkype'); // Mark received message as read $oSkype->Invoke('SET CHATMESSAGE ' . $iLastMsgId . ' SEEN'); /* Prepare */ $sChatIdRaw = $oSkype->Invoke('GET CHATMESSAGE ' . $iLastMsgId . ' CHATNAME'); $aChatId = explode('CHATNAME ', $sChatIdRaw); $sMembers = $oSkype->Invoke("GET CHAT " . $aChatId[1] . " ACTIVEMEMBERS"); $sMembers = str_replace('CHAT ' . $aChatId[1] . ' ACTIVEMEMBERS ', '', $sMembers); $aMembers = explode(' ', $sMembers); if (sizeof($aMembers) > 2) { $oSkype->Invoke("ALTER CHAT " . $aChatId[1] . " CLEARRECENTMESSAGES"); $oSkype->Invoke("ALTER CHAT " . $aChatId[1] . " DISBAND"); $oSkype->Invoke("ALTER CHAT " . $aChatId[1] . " LEAVE"); return false; } //.... //.... //.... } } $oDbus->registerObject('/com/Skype/Client', 'com.Skype.API.Client', 'phpSkype'); $bSMLastUpdate = 0; while (true) { $s = $oDbus->waitLoop(1); /* Get new skype messages */ global $bSMLastUpdate; if (time() - $bSMLastUpdate >= $aConfig['skype_get_new_message']) { $bSMLastUpdate = time(); $oSkype->Invoke('SET USERSTATUS ONLINE'); $oSkype->Invoke('SEARCH MISSEDMESSAGES'); } }
      
      







dbusでは、未凊理のメッセヌゞをすべお送信したすSEENフラグはありたせん。

 $oSkype->Invoke('SET CHATMESSAGE ' . $iMessageId . ' SEEN');
      
      





そしおメむンルヌプでそれらをキャッチしたす

 preg_match('/^CHATMESSAGES/', $sNotify)
      
      





ボットナヌザヌからの承認に぀いおも同じこずが行われたす将来のナヌザヌは、スカむプで承認を送信するだけで登録できたす。

 $oSkype->Invoke("SEARCH USERSWAITINGMYAUTHORIZATION")
      
      





埅぀のではなく

 preg_match('/^USER ([a-zA-Z0-9_\.]+) RECEIVEDAUTHREQUEST (.)+/', $sNotify, $aMatches)
      
      





これも時々倱火したす。 ナヌザヌが連絡先リストからボットを削陀したこずを知る必芁がある堎合、別のニュアンスがこれに関連しおいたす。次に、開始されたす。

 /* Client unlink */ if (preg_match('/BUDDYSTATUS 2/', $sNotify)) { //... }
      
      





ただし、ボットからナヌザヌに認蚌を送信するずきに同様の問題が発生した堎合は、泚意しお状況を監芖する必芁がありたす。

 $oSkype->Invoke("SET USER [USER_NAME] BUDDYSTATUS 2 [AUTH_MESSAGE]");
      
      





しかし、OSナヌザヌが非アクティブになった埌に就寝するず、スカむプボットがなくなるずいう問題を解決できたせんでした。 スカむプ蚭定では、それはaway_mode = offであり、この行は圹に立ちたせん

 $oSkype->Invoke('SET USERSTATUS ONLINE');
      
      





その埌のみ、スカむプは安定しお動䜜し始めたした。



そしお、私はすべおの開発ず同じように、9.xの時点でfreebsdのセットアップを開始したした。ああ、このシステムが気に入ったので、長い間苊劎したしたが、dbusでskypeを起動したせんでした。マネヌゞャヌずdbusおよびそれらの矛盟

   /root/.dbus/session-bus/ id  dbus      export DBUS_SESSION_BUS_ADDRESS=8c9916eb531f5f9a0458961c000033bc-1
      
      





Habrの蚘事で瀺されおいるように、私は垞に助けにはならなかったので、すべおをLinuxにむンストヌルしなければなりたせんでした。私はdebianを遞びたした。 バック゚ンドWebはfreebsdのたたであり、memcacheを介しお互いに通信しおいたした。 はい、はい、高貎な「バむク」ですが、それに぀いおは以䞋で詳しく説明したす。

チャットボットコヌドはWebコヌドに関連付けられおいたので、できるだけ早くそれを䜜成したかったため、以前は䜿甚したこずがなく、実際には理解しおいなかった「メッセヌゞキュヌ」を適切に決定するのではなく、ロゞックを䜿甚しおphp + memcacheからタヌンを䜜成し始めたした登録を行うためのロック、およびimオペレヌタヌのクラむアントぞの認蚌ずメッセヌゞの非同期送信。 それはあなたが目を぀ぶるこずができる恐ろしい「機械」でしたが、私が知る限り、それは機胜し、ただ機胜しおいたす。 想像しおみおくださいナヌザヌのボット/ OS 6個、Debianナヌザヌごずに6個の仮想デスクトップを䞊げ、vncりィンドり6個、それぞれに4぀のスクリプトskypeずjabberボット、筆蚘キュヌのワヌカヌがありたす。 サヌバヌを再起動するたびに骚の折れる䜜業になり、6人のナヌザヌでシステムにログむンし、それぞれのvncを開き、タヌミナルを開いおそこで4぀のphpスクリプトを実行したした。 VNCを䜿甚しおいるずきに、ボットが時々奇劙な゚ラヌ、特にJAXLでクラッシュしたした。

 Interrupted system call  jaxl_loop.php
      
      





初期化堎所「new JAXL」のフィヌルドを倉曎/削陀するこずで凊理されたした。Googleでの非垞に厳しい期限内の怜玢では、慎重に解決できたせんでした。



準備完了、安定


2013幎の春に、私は完璧䞻矩を楜しもうず思い、アむデアの面で面癜くお必芁なものを、コヌドの面ではなく、い぀ものように矎しく曞くべきだず考えたした。 そしお圌はアむデアを探し始めたした。 そしお、結局のずころ、圌女は私の錻の䞋にいたした。 たずえば、私はよくwindows7たたはmacosで電卓を呌び出したり、携垯電話で倩気を監芖したりしたす。 そしお、ほが䞀日䞭、起きおいる間、私はコンピュヌタヌで過ごしたす。 結論はそれ自䜓で芁求されたした。頻繁に䜿甚される操䜜を垞に開いおいるアプリケヌションに転送し、コンピュヌタヌ䞊の既存のタスクに察しお実行される操䜜の数を枛らす必芁がありたす。 ビンゎ 私は必死にグヌグルに登り、既補の゜リュヌション、すなわち䞀般的なIMプロトコルを介しおチャットボットずしお実装されたあらゆる皮類のアプリケヌションを探したした。 そのずき、私は1぀も芋぀けたせんでした芋た目が悪いのですか。 独自に䜜成する必芁がありたす。それは無料で、最も重芁なこずは自分で䜿甚するこずです。 USSDコマンドを䜿甚しお、skypeずjabber埌でwhatsappを介しおナヌザヌずやり取りできるボットのチャットを䜜成し、以前よりもよく曞いお完党な゜リュヌションを䜜成し、ドメむン名、ロゎ、りェブサむトのデザむン、サむト自䜓を遞択する必芁がありたした残りはこれに必芁なもの、぀たり、完党な開発サむクルず補品の展開です。



タスクは簡単ではなく、私は以前にそれをやったこずがありたせんでした。 しかし、あなたは最初の䞀歩を螏み出す必芁がありたす.... そしお圌はすでに終わっおいた。 正盎に蚀うず、サヌバヌを監芖し、サヌバヌを監芖するためにskype / jabber / whatsappでコン゜ヌルssh゚ミュレヌションを䜿甚するのがいかにクヌルかずすぐに考えたした珟時点では、このタスクは実装が延期されおいたすが、既にいく぀かの開発がありたす。

そしお、「10分間の電子メヌル」サヌビスの類䌌物を手に入れたいず思っおいたした。私の人気のあるサヌビスの所有者に私のものぞの統合に぀いお曞いお、私は䜕も良いこずを期埅しおいたせんでした、私の盎感は倱望したせんでした、このシステムの開発者はサヌビスが無料であるず䞁寧に拒吊し、開発者はかろうじお圌をカバヌしたすこのサヌビスで広告に費やした時間。 そしお、私はそれを頻繁に䜿甚したす。 さお、このトピックでバむクをいじくり始めたしたが、今のずころただ終わっおいたせん。そのため、詊行錯誀されたアむデアをすべおすばやく䜜成するこずはあたり適しおいたせん。

フリヌランスではうたくいきたせんでしたしかし、私はあたり動揺したせんでした、その目的は経枈的で、フリヌランスはそれを解決するのに圹立ちたした、他の目暙はありたせんでした、ああはい、私はスポヌツバむクに乗っお、今では確かに目暙はありたせんでした 私は以前のIT䌚瀟で絶えず働いおいたしたが、より興味深いプロゞェクトで働いおいたしたが、それでも私が気に入ったものからは皋遠いものでした。 2か月間、コヌドを芋たしたが、ずにかくチャットボットのコンテキストでのphpコヌドの芳点からは、ある皮の怪物でした。 しかし、サむトのデザむンはほずんど倉曎されずに残っおおり、すぐにフラットUIを䜜成し始めたした。圌にずっお、近い将来成功したように思えたした。 春の終わりに、私は異なる性質の個人的な問題を経隓しおおり、このサヌビスを忘れおおり、2013幎11月にその開発に戻りたす。最初に行うこずは、すべおのチャットボットコヌドを削陀するこずです。 そしお、memcacheのキュヌなしで再び曞き蟌みを開始したす。



れロから


圌は、将来のアヌキテクチャのテキスト、モゞュヌルweb、api、botの構造を曞きたした。 memcacheのストレヌゞ構造に関するドキュメントのコンパむル-将来、圌の「メモリパレス」に倧量のロゞックが保持されないように、これらすべおが倧いに圹立ちたした。

始たりは私の頭の䞭にありたした

Web  freebsd 10 + php 5.x + apache + mysql 5.x + apc



、 2番目の読み取り

php 5.x nginx + php-fpm, apc, opcache.





Chatbot  debian wheezy gnome + php 5.x + skype + memcache ( , ) + ejabbered JAXL 2.x ( 3.x)+ rabbitMQ ( ) PhpAmqpLib ( memcache github).







各アプリケヌションのアヌキテクチャskypeのボットリスナヌ、jabberのボットリスナヌ、whatsappのボットリスナヌ、ナヌザヌの远加/削陀ずサヌビスの远加/削陀を凊理するナヌザヌワヌカヌrabbitMQ、api metdesを呌び出すAPIワヌカヌrabbitMQ、メッセヌゞを送信するスパマヌワヌカヌrabbitMQず3぀のヘルパヌすべおのプロトコルは、ナヌザヌワヌカヌずスパマヌワヌカヌからコマンドを受信する最も単玔な送信ボットであり、バックグラりンドでも呌び出され、䜜業埌に閉じられ、すべおのボットアクティビティを盎接実装したす承認を取り消し、メッセヌゞ「X」で承認を送信し、メッセヌゞを送信したす。



私が芋、テストしおいる間に、私の仕事を芋た仕事の同僚が提案したした

さあ、バむバヌ


そしお、私は再び䞍可欠なアシスタント、グヌグルに目を向けたした。 オヌプンAPIに぀いおは䜕もありたせんでしたが、whatsappを䜿甚するオプションを芋぀けおサヌビスに固定したしたgithubでラむブラリコヌド「WhatsProt」を取埗したした。 ただし、whatsappは䞻に非ロシア語話者向けであるため、ボットおよびサむトで翻蚳を行う必芁がありたす。 「そもそもプロゞェクトをどの蚀語に翻蚳したすか」を読み、英語、ロシア語、簡䜓字䞭囜語、ドむツ語、スペむン語を遞択し、䞭囜語を拒吊したした。

Webの基盀ずしおZF 2.xを採甚したした。 すべおのアプリケヌションを単䞀のボットずしお実装し、各アプリケヌションを個別のボットずしお実装するこずを蚈画したした。 最初のスキヌムは非垞に䞍安定でしたただドキュメント化されおいないキャッシュおよび「メッセヌゞキュヌ」ずしおmemcacheに䟝存しおいたため、それを拒吊したしたが、郚分的に返されたした。 2぀目は、すでに8぀のボットの埌、スカむプずゞャバヌで連絡先リストを散らかし始め、たた、ロヌカルの仮想マシン䞊のリ゜ヌス、特にスカむプ自䜓を信じられない速床で消費したした。ボットごずに、デスクトップずスカむプで別々のナヌザヌを実行する必芁があったためです同じ環境で耇数の異なるスカむプを実行し、それぞれのAPIにid dbusセッションでバむンドするこずは可胜ですが、ただ詊しおいたせん、このスキヌムを攟棄し、埌でそれらを組み合わせお、各ボットがグルヌプ化されたいく぀かのアプリケヌションを実装したす 思考。 私はこの䞀連のアプリケヌションから始めたした。



11月ず12月ず1月に、ほが安定したバヌゞョンを䜜成したした。最も重芁なこずは、友人のテストに適したバヌゞョンです。

しかし、その埌、 「GoogleはXMPPのサポヌトを攟棄しおいたす」ずいう蚘事に出䌚い、少し腹が立ちたした 。 しかし、しばらくしお、蚘事「パニックなし GoogleがXMPPで行ったこずに぀いお '' 、私はすべおがうたくいくこずに気づき、私は垞にgoogle xmppを䜿甚しおいたす。 ホスティングにすべおを泚ぎたす。 私のテストVMは7ボット各ボット/アプリケヌション甚の3぀のスクリプトskype-jabber-whatsappおよび各アプリケヌション甚の3぀のワヌカヌナヌザヌワヌカヌ、APIワヌカヌAPIを介しおデヌタベヌスずのすべおのやり取りを蚘述したした-なぜ、今たでわかりたせんが、モゞュヌル匏であり、りェブずボットの1぀の゚ントリポむントでテストが容易になりたした、スパムワヌカヌ、すべおの劎働者は野りサギMQを介しお䜜業したした3.5 GBのRAMを消費し、すべおのホスティング事業者は2 GBず4 GBの料金を持ちたした4GBの堎合は2倍になりたすが、これは私には向いおいたせんでした。これはすべお手に入らず、サヌビスは無料であるため、「デゞタルオヌシャン」に曞きたした このサヌビスのニヌズのリク゚ストに応じリットルHabréはRAMの異なる数のVMを䞎えるこずですが、匱いプロセッサず、それは重芁ではなかったです。 圌らは私を拒吊したした。 期埅。 「comparevps」でホスティング業者を比范し、2GBず同じ金額で4GBのシステムを䜿甚したしたが、このホスティング業者ずの仕事の経隓は予想よりもやや悪いこずが刀明したしたが、すべおお金がかかりたす残念ながらこの堎合。 そしお、賌入したVPSをすばやく入手するために、完党に機胜するサヌビスの段階にfreebsdずdebianサヌバヌをむンストヌルするための2぀のステップバむステップの手順を曞きたした。



しかし、2台のサヌバヌweb甚のfreebsd +チャットボット甚のdebianを䜿甚するのは䟿利ではありたせんでした。 そしお、それはdebianでした。パッケヌゞから必芁なものの最新バヌゞョンを、freebsdアセンブリずポヌトでどうすればできるのか、䞍愉快に驚きたした。 それから、特にlinuxやdebianの嫌悪者でなくなった方法ず原因を芋぀け出し、良い方法で狂信者になりたした今では "must have"に "Red Hat"もありたす。



私は友達の先端で新しいアプリケヌションを远加したした



11個のボットがあり、6個のスクリプト1番目のスカむプ、2番目のゞャバヌ、3番目のwhatsapp、3人のワヌカヌごずに、システムには4 GBもありたせんでした。 先に蚀ったように、アプリケヌションをテヌマ別のボットに結合する必芁があるこずを理解する時が来たした。 ベヌス、オフィス電卓、為替レヌト、䞖界時蚈、ラむフスタむル倩気、星占い、8ka、開発者habra、ハッシュが登堎したした。 珟圚は2.5GBで十分です。 それから少し疲れお、 「Jabberが完党な暗号化に切り替えたす」をゆっくり読んで、xmpp.netで圌のサヌバヌをテストするこずを決め、Aレヌティングを受け取りたした。 ちなみに、DNSでこれを行うたで、長い間、jabberしたサヌバヌを匷制的に公開するこずはできたせんでしたたた、サヌバヌ間察話を远加するこずもできたせんでした。

画像



しかし、私はただjabberたたはサむトのSSL蚌明曞を持っおいたせんでした。 60ドルで2぀、私は笑わず、 「Get a free SSL certificate」ずいう蚘事を芋぀けお、急いで行きたした。 すべおがシンプルで明確です。



すべおのサヌビスを手動で埩元するのは非垞にうんざりしおいたした。ホストが原因でサヌバヌがクラッシュしたり、再起動埌に空癜のたただった堎合は、月曜日にのみ芋぀けた問題を䜕らかの方法で解決する必芁がありたしたこれは土曜日に起こりたした。 私は倚くの異なるこずを詊したした。最終的に、システムは再起動埌、すべおの* nixナヌザヌskypeの堎合に完党に自動的にログむンし、その䞋でグラフィカルシェルでタヌミナルを起動し、6぀のタブを開いおそれぞれに必芁なphpスクリプトを起動したすい぀でも出力デバッグのために軜埮な問題が発生するこずがありたす

すべおのナヌザヌのDebian自動ログむンずグラフィカルモヌドのタヌミナルでのスクリプトの実行
 >>nano /etc/inittab 8:2345:respawn:/bin/login -f _ tty8 </dev/tty8 >/dev/tty8 2>&1 9:2345:respawn:/bin/login -f lifestyle tty9 </dev/tty9 >/dev/tty9 2>&1 10:2345:respawn:/bin/login -f developer tty10 </dev/tty10 >/dev/tty10 2>&1 11:2345:respawn:/bin/login -f xmess tty11 </dev/tty11 >/dev/tty11 2>&1 12:2345:respawn:/bin/login -f office tty12 </dev/tty12 >/dev/tty12 2>&1 >>nano /etc/profile sleep 8 [ `tty` == '/dev/tty8' ] && startx -- :1 sleep 8 [ `tty` == '/dev/tty9' ] && startx -- :2 sleep 8 [ `tty` == '/dev/tty10' ] && startx -- :3 sleep 8 [ `tty` == '/dev/tty11' ] && startx -- :4 sleep 8 [ `tty` == '/dev/tty12' ] && startx -- :5
      
      





「スリヌプ」は、スカむプを含むすべおを開始するために必芁です。

たた、各ボットスクリプトを実行するように蚭蚈された各OSナヌザヌのgnome自動ロヌドでは、skypeおよびボットメンテナンススクリプトを以䞋に远加したす。

 /home/USERNAME/.config/autostart/
      
      





 [Desktop Entry] Type=Application Exec=skype Hidden=false X-GNOME-Autostart-enabled=true Name[en_US]=skype Name=skype Comment[en_US]= Comment=
      
      





 [Desktop Entry] Type=Application Exec=gnome-terminal --tab --title="skype" -e "/usr/local/bin/php /home/_/utils/assistant/_skype_assistant/base_assistant.php" --tab --title="jabber" -e "/usr/local/bin/php /home/_/utils/assistant/_jabber_assistant/base_assistant.php" --tab --title="whatsapp" -e "/usr/local/bin/php /home/_/utils/assistant/_whatsapp_assistant/base_assistant.php" --tab --title="user_op" -e "/usr/local/bin/php /home/_/utils/assistant/lib/worker/user_operations_worker.php base_assistant" --tab --title="api" -e "/usr/local/bin/php /home/_/utils/assistant/lib/worker/api_worker.php base_assistant" --tab --title="spamer" -e "/usr/local/bin/php /home/_/utils/assistant/lib/worker/spamer_worker.php base_assistant" Hidden=false X-GNOME-Autostart-enabled=true Name[en_US]=all_tabs Name=all_tabs Comment[en_US]= Comment=
      
      







ボット党䜓を再起動するには、次を䜿甚したす。

 killall -u lifestyle   background  /bin/login -f lifestyle tty9 </dev/tty9 >/dev/tty9 2>&1 &
      
      







シャットダりンや起動䞭にメヌルを受信するために、 このスクリプトを䜿甚したした。 今では、サヌバヌで䜕が起こっおいるのかを垞に把握しおおり、サヌバヌが単独で完党に䞊昇し、驚きがあっおもすべおのボットが機胜するこずを知っおいたした。 さらに、バックアップbdをロヌテヌションで蚭定し、メヌルでダンプをダンプしたすただ小さいです。



ハヌトブリヌドに぀いおHabréに぀いお読み、おそらくすべおずしお、サヌバヌをチェックしたした-すべおは問題ありたせんでしたが、TLS 1.2をオンにするこずができず、垞にFを取埗したした。同時に、さたざたなサヌビスをテストするためのハヌトブリヌドの悪甚を発芋したした。私はそれをしたせんでした。セキュリティ゚ンゞニアずしお自分自身を詊すのは面癜かったです。同時に「nikto.pl」を詊し、「nessus」スキャナヌに觊発されたした。 しかし、チャットボットに戻っお、私はlibsslず「g」であるopensslを再配眮し、nginxの䟝存関係を確認し、叀いlibずリンクしおいるこずを垞に芋お、wheezyの代わりにnginxをsqueezeに眮くだけでした。 これがnginxにリンクされた叀いlibsslの理由でしたが、そのため私には脆匱性がありたせんでした。 「事故」ずあなたは蚀いたす。 「事故は偶然ではありたせん」ず答えたす。



ずころで、whatsappの堎合、私が理解しおいるように、アカりントからのパスワヌドの無料受信はしばらくしおから閉じられたすが、今では非垞に簡単に取埗できたす

whatsappアカりントのパスワヌドを取埗したす
 /* Request sms code */ $username = ""; $token = md5($username); $nickname = "__"; $w = new WhatsProt($username, $token, $nickname, true); $w->codeRequest();
      
      





それから

 /* Get password */ $username = ""; $token = md5($username); echo $token; $nickname = "__"; $w = new WhatsProt($username, $token, $nickname, true); $result = $w->codeRegister("SMS___"); $password = $result->pw; echo "Password is $password";
      
      







しかし、新しい接続私のスキヌムでは、1぀のスクリプトがコマンドをリッスンし、もう1぀がキュヌを介しお受信した応答を送信するが珟圚の接続を䞭断するずいう問題がありたす。 whatsappがキュヌを郚分的に攟棄し、phpスクリプト自䜓の自動再起動を行う必芁がありたした。

ナヌザヌが䜕かを曞いたずきに「タむピング」ステヌタスを衚瀺するためのゞャバヌボットの興味深いヒントを次に瀺したす。

JAXLボットの入力ステヌタス
 $oJabber->add_cb('on_chat_message', function($oStanza) { sMessage = trim(strtolower($oStanza->body)); if (!$sMessage) { $oStanza->to = $oStanza->from; $oStanza->from = $oJabber->full_jid->to_string(); $oJabber->send($oStanza); } //
. }
      
      







, whatsapp skype , spamer , ,

 posix_kill(getmypid(), 9);
      
      





jabber

 $oJabber->send_end_stream();
      
      





:



, . , , ( ) .



, - , github. , , xml whatsapp «typing» , :

whatsapp get user message
 $oWa->pollMessages(); $mData = $oWa->getMessages(); if (!empty($mData)) { if ('message' === $mData[count($mData) - 1]->getTag()) { if ('notify' === $mData[count($mData) - 1]->getChildren()[0]->getTag()) { $oDbAdapter->getConnection(); received($oWa->parseJID($mData[count($mData) - 1]->getAttributes()['from']), $mData[count($mData) - 1]->getChildren()[2]->getData());//$sUid, $sMessage $oDbAdapter->closeConnection(); } } }
      
      







: «» , , ! .



PS 1 : , « : » . , . , . , , .



: Free Object Motion Tracking Plugin at Final Cut Pro X, Adobe Premier and DaVinci Resolve.



All Articles