前文
たまたま「勤務中」に毎日IRCが必要になりました。 使用されるクライアントは、Debianサーバー上のtmuxのirssiです。 99%の場合、ssh(putty)を介してサーバーに接続し、そこでirssiウィンドウに移動して、必要なチャネルの読み取り/書き込みを行います。 残りの1%はMirandを使用したプロキシされたirssiチャネルへの接続です。
個々のチャネルについて、特定の条件を満たす電子メールメッセージを送信するように構成されています。 このことは現在も機能し続けています。
しかし、少し前までは、ライフスタイルの変更に関連して、ミランダの使用をやめました。スマートフォンから1つのチャンネルを読み書きする必要がありました。
Androidにスマートフォンを持っているので、最初にirssiプロキシで動作するネイティブアプリケーションを見つけようとしたのは理にかなっています。 見つかりません。 プロキシを忘れた場合、ネイティブIRCクライアントがまだ存在しますが、これはコートではありません。 したがって、適切なメッセージを見逃さないためには、常にオンラインである必要があります。 はい、新しいアカウントが必要ですが、これは常に可能とは限りません。 一般に、このアプローチを使用すると、sshを介してサーバーに接続し、そこでirssiを操作するのが簡単になります。 実際、本当に必要なときにこれを行いました。 しかし、Android向けのsshクライアントには、多くの要望が残されています-原理的には現実的ですが、完全に不便です(特に私の古いSamsung Galaxy Sの4インチの画面では)。
一方、私はGoogleハングアウトに非常に慣れています。 吐き出したり、石を投げたり、WhatsAppや他のIMクライアントを覚えたりすることはできますが、私を説得するのはすでに困難です。 ハングアウトはとても便利です。 したがって、IRCとGoogleハングアウトの間のゲートウェイの考えは、私の頭の中を制止することを止めませんでした。 グーグルは情報をゼロにしました。 何回か、irssi + bitlbeeという言葉に出くわしました。 以前bitlbeeについて聞いたことがありますが、サーバーで別のサービスを上げることは望みませんでした。
メッセージの内容をハングアウトアカウントに送信することに既に同意しました(メール通知と同様)。 ほとんど発生しました(sendxmpp経由)。 メッセージは届くように見えましたが、サードパーティのクライアント(ミランダ)にのみ表示され、ネイティブのハングアウトには表示されませんでした。 さらに、送信はGoogle以外のjabberアカウント(jabber.org、jabber.kiev.ua)からのみ成功しました。 Googleアカウントの場合、sendxmppは、どのようにパラメーターに苦労しても、常にエラーを出しました。 そして、私はこのソフトウェアをまったく書き直したくありませんでした。
最後に、私はたくさんのirssi + bitlbeeを試すことにしました。 それは何ですか? それが機能しない場合、私はいつでもこのビジネスを取り壊すことができます。
そして、あなたは知っています、それはうまくいきました!
実際には、解決策
便宜上、ボットとして機能する新しいGoogleアカウントを設定しています。 IRCとのすべてのメッセージングは、このアカウントを介して行われます。 もちろん、受信者アカウントを送信者として使用することもできます。 自分に書きますが、私は倒錯しないことにしました。 ドメインに新しいGoogle Appsアカウントを追加しました。 完全なアカウントの代わりにエイリアスを追加することもできますが、私はより安全だと判断しました。
bitlbeeにボットアカウントを追加します。
acc add jabber @ set 0 set server talk.google.com acc 0 on
今重要なポイント。 ボットアカウントと個人アカウントを相互に認証する必要があります。 ハングアウトを使用してこれを行うことができませんでした。 ネイティブクライアントでのメッセージングは続行されましたが、実際は
<_>@public.talk.google.com
ようなアカウントでした。
そのため、両方のアカウントをミランダに追加し、それらの間でそれらを認証することほど良いものはありませんでした。 その後、bitlbeeのボットの連絡先リスト(すべてを一覧表示)にある個人アカウントがオンラインステータスで表示され始めました。
「スイスナイフ」irssi-trigger.plを取得します。 この機能豊富なプラグインのメリットを説明するには、別の記事が必要です。 ここでは、自分のタスクのみに限定します。
作業の一般的なロジックは次のとおりです。
- チャンネルXで公開されたすべてのメッセージは、ボットに代わって個人アカウントに転送されます。
- 個人アカウントからボットが受信したすべてのメッセージは、チャネルXで公開されます。
〜/ .irssi / triggersファイルでは、これは2つのトリガーによって記述されます。
- -publics -channels '#chanX' -command 'msg -localhost -nick PERSONAL_ACC $ N:$ M'
- -privmsgs -masks PERSONAL_AKK -command 'msg -SERVER -channel #chanX $ M'
irssiとtrigger.plの経験豊富なユーザーの場合、すべてが明確になっているはずです。 初心者のために、私はより詳細に説明します:
- 名前が#chanXのパブリック(-publics)チャネル(-channels)で公開されているすべてのコマンドについて、コマンド(-command)を実行します。メッセージ(msg)を、localhostサーバー上のPERSONAL_AKKという名前のユーザー(-nick)に送信します。チャネルの送信者($ N)およびメッセージテキスト($ M)。
- PERSONAL_AKKという名前のユーザー(-masks)から受信したすべての個人メッセージ(-privmsgs)に対して、コマンド(-command)を実行します。メッセージテキスト$ MのサーバーSERVER上の#chanXという名前のチャネル(-channel)にメッセージ(msg)を送信します。
ここでは、次の前提が使用されます。
- irssiは複数のサーバーに接続しています。
- localhostサーバーに関してbitlbeeへの接続が確立されます(ポート6667を世界に公開したくないため、bitlbeeは127.0.0.1で実行されています)。
- #chanXチャネルのユーザー名は&bitlbeeのユーザー名と同じです。
- PERSONAL_AKK-これは、bitlbeeのボットの連絡先リストにあるユーザー名であり、変更できます(名前変更に役立ちます)。
- SERVERは、メッセージをパブリッシュするチャネル内のサーバーの名前です。
結果
irssiで最初のメッセージ(ボットまたは個人アカウントから)を受信した後、これら2つのアカウントの個人的な通信を含む新しいウィンドウが開きます。 それに応じて、チャンネルからのメッセージはGoogleハングアウトに届きます。チャンネルにメッセージを送信できます。
私もirssiのプロキシを拒否しました(不要なため)。
エピローグ
trigger.plの可能性は非常に広いです。 ここでは、おそらく10%未満の可能性がさりげなく検討されました。 トリガーはより柔軟に構成でき、正規表現を使用して「すべてをすべて描画」できます©
そのため、変数$ Nと$ Mに加えて、他にも多くの変数が利用可能です。 キーワードに応じて、特定のユーザーまたは特定のキーワードを含む複数のチャンネルからメッセージを転送したり、特定のチャンネルにメッセージを公開したり、すべての個人的な通信をブロードキャストしたりできます。詳細については、ヘルプ/トリガーヘルプを参照してください。