Adblockを無効にします

AdBlockはサイト上のコンテンツをブロックしています

ADBlock errore

どのように私はPerlのJabberの:: SimpleSendは、Gmailのチャットで動作するように入手できますか?

StackOverflow https://stackoverflow.com/questions/799648
 チェックしました

質問

私は、インスタントメッセージを送信するために単純なPerlスクリプトを記述しようとしています。それが最も資するプロトコルであるかもしれないようにJabberのが見えました。しかし、次のスクリプトは失敗します:

#!/usr/bin/env perl
use Jabber::SimpleSend qw(send_jabber_message);
send_jabber_message('me@gmail.com',
                    'CENSORED',
                    'you@gmail.com',
                    'subject test',
                    "body test");

これは言います:

Can't call method "can_read" on an undefined value at 
/opt/local/lib/perl5/site_perl/5.8.9/XML/Stream.pm line 1421.

カートマンの答えが指摘するように、コードを実際にする必要があります。

#!/usr/bin/env perl
use Jabber::SimpleSend qw(send_jabber_message);
send_jabber_message('me%40gmail.com@talk.google.com',
                    'CENSORED',
                    'you%40gmail.com@talk.google.com',
                    'subject test',
                    "body test");

しかし、それは次のエラーで失敗します:

No SASL mechanism found
 at /usr/local/lib/perl5/site_perl/5.10.0/Authen/SASL.pm line 74

私はのAuthen :: SASLのCPANモジュールがインストールされています。

解決

のJabber :: SimpleSendは、標準のJabberサーバと対話するための簡単な方法ですが、モジュール名はあなたを誤解させてはいけない:Gtalkなどは、確かに少し異なっている、TLS暗号化を要求する(Jabberの:: SimpleSendはしないだろうということ)そして、ホスト名の変更。あなたは、ネット:: XMPPを使用して、そのAPIを直接扱うより良い結果を取得します。

http://www.gridpp.ac.uk/wiki/Nagios_jabber_notificationネット:: XMPPを使用してのperlの75行ではよくコメントし、完全に作業実施のため。 Nagiosの通知を送信するintededが、それはあなたが必要な正確に何をしています。

他のヒント

私は、コードに慣れていないんだけど、XMLのそのライン::モジュールが選択()ループを開始する場所ストリームです。ライン523から524には、IOが先サーバーへのソケットを選択::通過すると、IO自体を選択します::どこ方法のXML undefをしてはいけませんblessされたリファレンスを、渡す:: Streamがそれを使用します。

であります

何かが、おそらく、おそらく、サーバー接続エラーを修正する見当違いの試みで、XMLの「SELECT」要素:: JabberのモジュールでStreamオブジェクトを修正しています。私は、より具体的なことができませんでしたごめんなさいます。

<時間> 更新に応じて

これらは、奇数のエラーであり、私はとにかくJabberのモジュール内部を見るために意味してきたので、私はソースを見に取りました。以下は、CPANから利用できる使用されるモジュールの最新バージョンを見に基づいています。あなたはこれらのモジュールをサブクラス化し、予期しない何かが起こる場所を確認するためのコードの追加を開始する場合を除き、これはおそらく非常に有用ではありません。 (あなたがのJabberモジュールの内部に興味を持っていないのであればあなたは次の段落をスキップすることができます。)

は、更新された情報から、私はそれは$ parent->メカニズム、およびのAuthenを想定した2つの原因が存在するから、結果を必要とするライン41上のAuthen :: SASL :: Perlはcroaksポイントにそれをトレースしました: :SASLが壊れていません。どちらかそれは存在しないとは思えない、または「メカニズムは」それはのAuthenのコンストラクタで設定したネット:: XMPP ::プロトコル(ライン2968)、:: SASLから引数なしで間違って呼ばれています。ネット:: XMPP :: Protocolは「メカニズム」(GetStreamFeatureはライン2958と呼ばれる、ライ​​ン3340の周りに定義されたメソッド)を定義します$機能はちょうど呼び出し先から渡された文字列とXMLのid一部であるreturn $self->{STREAM}->GetStreamFeature($self->GetStreamID(),$feature);、と::ストリームオブジェクトのセッションます。

元のXMLエラーとセッションIDが悪い行くの可能性に基づいて、サーバは:: XMLへの予期しないいくつかの点で不良データを送信ストリームと、それを使用してモジュールによって行方不明のいずれかと思われます。私はfoo%40gmail.com@talk.google.comは、右のユーザー名の形式であることを確信していないが、私はそれが何か間違ったことのJabberサーバなしに、これらのエラーを引き起こしている可能性がどのように知りません。

私が見て何とかサーバの出力をキャプチャしてみてください、その後、別のサーバーに異なるユーザー名と新鮮なスタートとのJabber :: SimpleSendがすべてで動作するかどうか見るものXML ::ストリームがオンに窒息されます。

<時間>

のアップデート:の何が価値があるのは、私はモジュールをインストールして、私は正確に同じエラーを取得しています。 AUTHEN :: SASL :: Perlの:: PLAIN、他のすべての前提条件が存在します。私はgmailaccountname@talk.google.comにユーザー名を設定すると(例えば、#!は/ usr / binに/ perlの-wまたはperlの-w filename.pl)グローバル警告を有効にした場合や、XML :: Streamが未定義の束を明らかに値問題、およびSimpleSendは、実際に「Jabberのサーバーに接続できませんでした」という警告を出してくれる! (いいえ、私はそれが本当に何を意味するのか分からない:。()

<時間>

のアップデート:の私はネットをインストールしようとしていた:: Jabberの::ボット、それが何かを解決するかどうかを確認するために(私はいくつかのSSLモジュールのエラーの後にあきらめた)、と私はそのコンストラクタは、このオプションを持って気づきましたそして、注意します:

gtalk => 0 # Default to off, 1 for on. needed now due to gtalk differences from std jabber server.

ストリームのために例外をスローする気にしないXML ::、サーバーのは珍しい何かをするという考えを強調した。

あなたのユーザー名はme@gmail.comする必要がありますが、サーバー名がtalk.google.comです。だから、最初のパラメータは、私@ gmail.com @ talk.google.comをする必要がありますが、私はPerlがその二重の@記号を完全に理解できるかどうかわかりません。あなたは、最初のパラメータがme%40gmail.com@talk.google.comになるように40%で最初の@を脱出しようとする場合があります。

更新I: あなたはSASL認証モジュールが欠けているように、2番目のエラーについて、見えます。 GmailはSASL平野認証を使用しています。だから、/usr/local/lib/perl5/site_perl/5.10.0/Authen/SASL/Perl/PLAIN.pmファイルを持っているのですか?

あなたはのAuthenを必要と似:: SASL ::サイラス(C実装)またはのAuthen :: SASL :: Perlの(Perlの実装は)単に最良を見つけるためにしようとするのAuthen :: SASL(だけでなく、インストールされるように見えますお使いのマシンにインストールされているオプション、そして、あなたのために、)どちらも見つかっていない。

あなたがそれらのいずれかをインストールしているかどうかを確認します。

これは、ソースとマニュアルの私の読書だ - 。私はこれをテストしていませんでした、メーリングリストへ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow