連載:世界のWebサービス
第8回 iモードからMSN Messengerへメッセージを送る

1.MSN Messenger Webサービス

田口 景介
2001/09/18

 MSNSenderがメッセージを送信するために利用するWebサービスが、brains-N-brawn.comで公開されている「MSN Messenger Webサービス」である(http://www.brains-n-brawn.com/messenger/)。

brains-N-brawn.comのMSN Messenger Webサービスのページ
このサイトではMSN Messenger Webサービス以外にも、ニュース・グループにアクセスするためのWebサービスも提供しているようだ。

 このWebサービスはMSN Messengerの利用者へメッセージを送信する機能を持つが、MSN Messengerクライアントとしての機能をフル実装しているわけではない。まず、メッセージを送信することはできるが、返事を受け取ることはできない。一方的に送るだけだ。また、送信されたメッセージはすべて「evil_mess@hotmail.com」からのメッセージとして先方に表示される。こんな不吉そうな名前の「evil_mess」からいきなりメッセージを送り付けられれば、十中八九無視されるのは間違いない。あらかじめ話を付けておいて、送るときにはメッセージの先頭に自分の身元がわかるように名前をつけておくのがいいだろう。また、残念ながらメッセージ文に日本語は使えないようだ。

 詳しい仕組みは不明だが、Webサービスの仕様から察するに、おそらくWebサービス自身が「evil_mess@hotmail.com」としてMSNへサインインしており、これがメッセージを中継しているのだろう。このため、先方が返事のメッセージを送信しても、メッセージは「evil_mess@hotmail.com」に受け取られてしまい、iモードで受け取ることはできないようだ。とりあえず、「evil_mess」宛の返信メッセージが表示される「Auto Responder Received Messages」なるWebページが用意されているのだが、メッセージ受信者からの返信メッセージがただ羅列されるだけで、誰からのメッセージか判断がつかないので、あまり意味はない。

MSN Messenger Webサービスのメソッド

 MSN Messenger Webサービスは非常にシンプルなインターフェイスで設計されたWebサービスである。メッセージを送信したければ、次のAnonymousSendMessageNonSoapメソッドを呼び出せばよい。引数buddiesには宛先のユーザー・アカウント(例:da@hotmail.com(このアカウントは実在しない))を、引数messageにはメッセージ文を指定する。

AnonymousSendMessageNonSoap(String buddies, String message)

AnonymousSendMessageNonSoapメソッドのテスト用ページ
ASP .NETにより生成されるこのテスト用ページからもMSN Messengerにメッセージを送り、テストしてみることができる。

 また、次のAnonymousConversationNonSoapメソッドを使えば、最大4ユーザー宛に同じメッセージを送信することが可能だ。こちらは引数buddiesにカンマで区切ってユーザー・アカウントを指定する。

AnonymousConversationNonSoap(String buddies, String message)

WebアプリケーションMSNSenderの作成

 次に、今回作成したWebアプリケーションであるMSNSenderをローカル・マシン上で構築する方法を簡単に解説しておく。MSNSenderはWebアプリケーションなので、作業手順が前回までと少々異なり、ソースファイルを用意してコンパイルする前に、インターネットサービスマネージャ(IISの管理ツール)での準備作業が必要になる。

  1. インターネットサービスマネージャを起動して、仮想ディレクトリを作成する (以下は「c:\MSNSender」を仮想ディレクトリMSNSenderとして利用する場合)。

  2. コマンドプロンプトを起動して、c:\MSNSenderで以下のコマンドを実行し、Messenger.csを作成する。

wsdl /n:MSNSender
  http://65.116.26.9/messengerwebsrv/messengerservice.asmx
  1. c:\MSNSenderに以下のソースファイルをコピーする(ソースファイルのダウンロードはこちら:msnsender.zip(圧縮ファイル))。
    • AssemblyInfo.cs
    • Global.asax
    • Global.asax.cs
    • SenderForm.aspx
    • SenderForm.aspx.cs
  1. ディレクトリc:\MSNSender\binを作成する。

  2. c:\MSNSenderで以下のコマンドを実行し、コンパイルする(これによりc:\MSNSender\bin\MSNSender.dllが作成される)。

csc /t:library /out:bin\MSNSender.dll AssemblyInfo.cs
  Global.asax.cs Messenger.cs SenderForm.aspx.cs

 以上の作業を終えると、http://127.0.0.1/MSNSender/SenderForm.aspxからMSNSenderのWebページを開けるようになる。

エンコーディングの変更

 こうしてMSNSenderのセットアップを終えれば、IEなどからアクセスが可能になり、メッセージを送信できるようになるが、iモードからのアクセスには問題が残されている。このままでは、UTF-8でエンコーディングされたWebページがクライアント(iモード)に送られてしまうのだ。これは、Webページ(ここではSenderForm.aspx)がShift_JISで保存されていようとも関係ない。ASP .NETによってaspxファイルが処理され、実際にクライアントへ送られるWebページが生成される段階でUTF-8へと変換されてしまうからだ。ところが、iモードはShift JISのデータしか正常に表示することができないので、このままでは文字化けが起きてしまう(「宛先」や「メッセージ」が文字化けする)。そこで、Web.configを作成する必要がある。

 Web.configは、Webアプリケーションの実行時に参照される、さまざまな設定が保存されているXMLファイルであり、エンコーディングの設定もここに含まれている。ここではエンコーディングの設定さえ行えばいいので、次のリストに示す内容でWeb.configを作成し、c:\MSNSenderに保存すればよい。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <globalization
            requestEncoding="Shift_JIS"
            responseEncoding="Shift_JIS"
   />
  </system.web>
</configuration>
Web.configの内容
このファイルをWebアプリケーションのあるディレクトリにおくことにより、ページがShift_JISで表示されるようになる。

これによってSenderForm.aspxがShift_JISでクライアントへ送られるようになり、iモードでも正常に表示されるようになる。End of Article

 

 INDEX
  [連載]世界のWebサービス―― 究極のWebサービスを求めて ――
  第8回 iモードからMSN Messengerへメッセージを送る
  1.MSN Messenger Webサービス
 
「世界のWebサービス」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間