チュートリアルその1。 Hello world 
OpenAPIを使って携帯メール用のアプリを作ってみましょう。OpenAPIを使うにあたって、プログラミングの知識は特に必要としません。 実際にメールに表示させる情報を書いてみます。
1.返信用の文章をウェブサーバに設置する
subject=ニワンゴです。 body=こんにちは こんにちは (AA略)
これを hello.txt という名前で保存します。文字コードはSJISにしてください。 サンプル中のというのは晴れマークの絵文字
です。他の絵文字を出すには、基本絵文字一覧のサイト[www.nttdocomo.co.jp] からUnicodeの箇所を参照してください。
携帯メールを送ると、hello.txtの内容が返るようします。それではhello.txtをウェブサーバに設置しましょう。単なるテキストファイルですので、無料ホームページの開設できるサイトにおいてもらえればOKです。ここでは説明のために設置後のURLをhttp://example.com/hello.txtとします。
2.コマンドの登録
hello.txtを発動させるためにコマンドを登録します。このページの左のバーからニワンゴ開発にログインして、コマンドを追加します。 コマンド名にあなたの名前を入れてください。コマンド名に「名無しさん」と入力すれば、携帯電話から「名無しさん」とメールすることで使えるようになります。URLには先ほどのURL(http://example.com/hello.txt)を入れてください。説明文は空白のままで結構です。3.しばらくお待ちください
実は、コマンドは中の人が手作業で登録しています。登録完了のお知らせが来るまでお待ちください。4.携帯電話での動作確認
登録完了のお知らせが来たらもう使えるようになっています。本文にコマンド名を入れて、携帯電話からm@open.niwango.jpにメールしてみてください。チュートリアルその2。 10行で作るRSSリーダー
とはいえ、やっぱり便利なものを作るにはプログラムで書いたほうがいいと思います。もうすこし便利なものを作りましょう。ニコニコ動画開発者ブログの新着情報を教えてくれるアプリを作ろうと思います。ニコニコ動画開発者ブログのRSSフィードを取得して、新着情報をメール形式にして返信する仕組みです。1.下準備
ウェブサーバにこれらのものが必要です。- PHP4もしくはPHP5
- PEARのXML_RSSライブラリ
2. コピペ
下記のソースをコピペしてPHPファイルとして保存してください。文字コードはSJISです。
<?php
require_once("XML/RSS.php");
$rss =& new XML_RSS("http://blog.nicovideo.jp/index.xml");
$rss->parse();
echo "body=";
echo "ニコニコ動画ブログ\r\n";
foreach ($rss->getItems() as $item) {
echo "・" . mb_convert_encoding($item['title'], 'SJIS', 'UTF-8') . "\r\n";
}
?>
PHPを設置できたら、ブラウザから表示確認してみてください。ニコニコ動画開発者ブログの新着情報が出ていれば成功です。
3.動作確認
コマンド登録をして、使えるようになるまで待ちます。 コマンドが使えるようになったら、携帯電話からメールを送って動作確認します。チュートリアルその3。 デコメールを使う
デコメールを使って利便性の高いRSSリーダーを作ってみましょう。デコメールはなんだか難しそうな雰囲気がしますが、基本的にHTMLメールだと考えてもらって差し支えありません。1.デコメールを作る
デコメールを送るには、本当は難しい処理をしなければなりませんが、OpenAPIではdeco=の後にHTMLを書くだけでOKです。デコメールの送信例はこのようになります。deco=<html><body> <a href="http://niwango.jp/">テスト</a> </body></html>
2.画像をつける
デコメールに画像をつけるには、本当は難しい処理をしなければなりませんが、OpenAPIではdecoimg=の後に画像のURLを書くだけでOKです。 以下サンプル。decoimg=01@061023.184750;http://niwango.jp/img/ssb/img_logo.gif deco=<html><body> <img src="cid:01@061023.184750"><br> ニワンゴのロゴ。 </body></html>01@061023.184750というのは画像の識別子です。好きな名前を入れてもらって大丈夫です。HTMLと同様、画像を表示するにはimgタグを使うのですが、ファイル名の前に cid: をつける必要があります。cid:の後に画像の識別子(01@061023.184750)をつければ、画像を埋め込むことができます。
3.デコメール機能と画像機能をあわせる
かっこいいRSSリーダーに変身しました。ニコニコ動画開発者ブログしか読めませんので、うまく改造してみてください。
<?php
require_once("XML/RSS.php");
$rss =& new XML_RSS("http://blog.nicovideo.jp/index.xml");
$rss->parse();
echo "decoimg=01@061023.184750;"
echo "http://user.niwango.jp/sample/img/all_niwango_talk_top_i_l.gif\r\n";
echo "deco=";
echo "<html>\r\n";
echo "<body>\r\n";
echo "<img src=\"cid:01@061023.184750\"><br>";
echo "[ニコニコ動画ブログ]<br>\r\n";
// タイトルの出力(デコメール用)
foreach ($rss->getItems() as $item) {
echo "・<a href=\"" . $item['link'] . "\">" .
mb_convert_encoding($item['title'], 'SJIS', 'UTF-8') .
"</a><br>\r\n";
}
echo "</body>\r\n";
echo "</html>\r\n";
// テキストメール用(デコメール対応端末以外はこっちが表示されます)
echo "body=";
echo "ニコニコ動画ブログ\r\n";
foreach ($rss->getItems() as $item) {
echo "・" . mb_convert_encoding($item['title'], 'SJIS', 'UTF-8') . "\r\n";
}
?>
チュートリアルその4。 パラメータを使ってお昼ごはんを決める
OpenAPIでは、携帯メールに関する情報もとることができます。ニワンゴのサーバが登録URLにリクエストをするときに、HTTPのPOSTパラメータに携帯メール情報を付与しています。 サーバから渡ってくるリクエストパラメータ一部を紹介します。- uid … エンドユーザのユーザID。22バイトの英数文字で、エンドユーザの携帯メールアドレスと1:1で対応しています
- carrier … エンドユーザの携帯キャリア。docomo/kddi/vodafone/willcomのいずれか。メールアドレスから判別されます
- c … 反応したコマンドキーワード、URLエンコードされています。
- p1 … 付与されたパラメータ(1番目)、URLエンコードされています。
- p2 … 付与されたパラメータ(2番目)、URLエンコードされています。
1.パラメータを判別する
p1の内容によって動作を変えます。
<?php
$chinas = array("中華一番", "中華二番", "中華三番");
$was = array("和食処 近藤", "和食処 佐藤", "和食処 伊藤");
$ramens = array("ラーメン次郎", "ラーメン二郎");
$zannens = array("コンビニ", "オレンジ色の店");
//判定部分
if($_REQUEST['p1']=="中華"){
$name = $chinas[array_rand($chinas)];
}else if($_REQUEST['p1']=="和食"){
$name = $was[array_rand($was)];
}else if($_REQUEST['p1']=="ラーメン"){
$name = $ramens[array_rand($ramens)];
}else{
//ジャンル指定がないと残念モード突入
$name = $zannens[array_rand($zannens)];
}
echo "body=今日のお昼は{$name}がいいんじゃないかな。";
?>
2.ユーザを判別する
uidは送信元を特定するIDです。あるメールアドレスから何度も携帯メール送信すると、同じuidのリクエストがきます。この機能を使ってパーソナライズドリコメンド機能をつけてみましょう。
<?php
//uidがAbCdEfGhIjKlMnという人だった場合、パーソナライズドリコメンドを行う
if($_REQUEST['uid']=="AbCdEfGhIjKlMn"){
echo "body=今日のお昼はカレーがいいんじゃないかな。";
exit;
}
$chinas = array("中華一番", "中華二番", "中華三番");
$was = array("和食処 近藤", "和食処 佐藤", "和食処 伊藤");
$ramens = array("ラーメン次郎", "ラーメン二郎");
$zannens = array("コンビニ", "オレンジ色の店");
//判定部分
if($_REQUEST['p1']=="中華"){
$name = $chinas[array_rand($chinas)];
}else if($_REQUEST['p1']=="和食"){
$name = $was[array_rand($was)];
}else if($_REQUEST['p1']=="ラーメン"){
$name = $ramens[array_rand($ramens)];
}else{
//ジャンル指定がないと残念モード突入
$name = $zannens[array_rand($zannens)];
}
echo "body=今日のお昼は{$name}がいいんじゃないかな。";
?>
携帯メールアドレスと AbCdEfGhIjKlMn というuidのヒモづけは、OpenAPIのリクエストのログを使って行うと楽です。



フィードを取得