ヤマダタイゴです。Felicaタッチで来場管理のエントリの後編です。
前エントリではFelicaリーダからHttp getリクエストを送るところまでのご紹介でした。今回は受け取ったパラメータを使ってsalesforceに流し込むところをご紹介します。
salesforceをCRMやSFA(営業支援)といった本来の使い方ではなく、簡単・無料で高機能なDBとして使っているところがこのエントリのアピールポイントでございます!
おさらいと作業の流れ
前回のエントリでは、ピットタッチプラスの管理画面上で設定したWebアプリに、↓のようなパラメータがくるとご紹介しました。
- Felicaの識別ID
パラメータ名:idm - Felicaチップ(厳密にはメモリ領域)単位に割り振られるほぼユニークなIDです。フェリカネットワークスは「完全にユニークであること」は保証してないようですが、世の中の使われ方を見ると特に問題はなさそうに思います。
- ピットタッチプラスの端末ID
パラメータ名:tid - ピットタッチプラスの端末に割り振られたIDです。今回はこれを「イベントや会場」を示すものとして使っています。このIDはピットタッチプラスの管理画面から変更できるので、イベントが変わるごとにセットしなおすイメージです。
- タッチした時刻
パラメータ名:tim - タッチされた時刻です。yyyymmddhh24missの形式です。
- FeliCa種別
パラメータ名:typ - タッチしたFelicaがカードなのか、ケータイなのかを示す種別です。今回は使っていません。利用者分析で役に立ちそうです。
- ステータス
パラメータ名:sts - タッチされた時のピットタッチプラス端末のステータス(01~04)を示すパラメータです。ピットタッチプラス端末にあるボタンを押すと、前面にある4つのランプが切り替わります。1つ目のランプの時にタッチすると来場、2つ目のランプで再入場、3つ目のランプで退出、のように使い分ける時に使うパラメータです。今回は使っていません。
これをふまえつつ、
- salesforceを使う準備して、
- salesforce上に必要な器(オブジェクト)を作って、
- Felicaでタッチされたデータをsalesforce APIを使ってsalesforceに流し込むcgiを作る
というのが後編の大きな流れになります。
後編 webサーバからsalesforce
salesforceを使う準備
salesforceはtoBなサービスとして皆様もご存知かと思いますが、Developer Editionを使えば一開発者でも無償で使うことができます。ちなみにエディションごとの価格帯はこちら(www.salesforce.com)に見つけました。
僕らが使うDeveloper Editionの制限事項は以下とのことです。
- 1組織あたり2MBのディスク容量。(組織=一般的なDBで言うインスタンスなイメージです。)
- 作成できるユーザ数が2ユーザまで。
この制限事項はこちら(developer.salesforce.co.jp)の冒頭に書かれています。が、実際にログインして使用できる容量を見るとデータで20MB、ファイルで20MBとなっています。おそらく下の画像のとおりデータで20MB、ファイルアップロードで20MB使えるんだろうと思います。
データの保存期間については特に期限がないようなので、ディスクサイズの制限さえクリアできれば十分使えますね!
ちなみに、未検証ですがSalesforce to Salesforceという組織間でデータ共有できる仕組みを使えば、ディスクサイズの制限も問題なくなるかもしれません。詳細はこちら(blogs.salesforce.com)に詳しく書かれています。ちょっとずるい使い方な気もしますが、この機能の思想がすごくステキだなあと思ったのであえて書いてみました。
ずいぶん脱線してしまいました。まずはこちら(www.salesforce.com)からDeveloper Editionのライセンスをとりましょう!
セキュリティトークンの入手
APIからアクセスするにはブラウザ用のID/Passに加えてセキュリティトークンが必要です。以下の手順で用意します。
- salesforceにログインし、右上の設定を選択
- 左ペインの「私のセキュリティトークンのリセット」を選択。
- 右ペインに表示されるまま進めてください。登録しているメールアドレスにトークンが送られるので、それを[mypassword] + [token]とつなげて使用します。
APIライブラリのインストール
続いてAPIでアクセスするためのライブラリを入手します。こちら(developer.salesforce.co.jp)-日本語とこちら(wiki.apexdevnet.com)-英語版wikiに各言語のライブラリへのリンクがあります。僕はPerlを使ったので、cpanのWWW-Salesforce-0.090を使いました。
cpanからのインストールについては割愛しますが、make testではまったところだけメモします。
エラーメッセージ その1:
# Failed test 'query for 'Document' folder id' # at t/WWW-Salesforce.t line 160.
ここでは、salesforceにファイルをアップロードできるかというテストをしています。なのでsalesforce上にアップロード可能なフォルダを作っておかないとだめでした。
- salesforceの「ドキュメント」を開く。トップの上にあるタブにはないかもしれませんが、右端にある▶を押すと見つかると思います。
- 初期表示で「私の非公開ドキュメント」というフォルダが選択されていると思いますが、このフォルダにはAPI経由でアップロードできません。なのでプルダウンの右にある新規作成リンクから、フォルダを作成します。
- 適当にラベル名を入力して、画像のようにアクセス権を設定すればOKです。
エラーメッセージ その2:
# Failed test 'create new png document' # at t/WWW-Salesforce.t line 188.
テストコード内にバイナリ文字列があってそれを画像としてアップロードしようとしているようです。アクセスまでOKなことが確認できたので、僕はこのエラーは無視することにしてテストコードを書き換えてしまいました。画像をAPI経由でアップロードしたくなったら考えることにします!
salesforce上にオブジェクトを作る
salesforce上には、以下のようにカスタマオブジェクトを作っています。デフォルトで用意されているものは使わず、全部カスタムオブジェクトとして自分で作りました。
- カスタマ
- 利用者の個人情報を貯めるオブジェクト。Felicaのタッチ回数nにたいして利用者1で紐づくようにします。
- Felicaタッチ履歴
- 利用者の個人情報あるなしに関わらず、とにかくFelica情報を貯めるオブジェクト。1回目のタッチでは個人情報が紐づいていないので1回目のタッチした後管理画面上で個人情報と紐づけられるようにします。1回Felica IDが紐づいたら2回目以降はこの履歴に入った時点で自動で利用者と紐づきます。
- 設置場所
- パラメータで渡される端末IDをマスタ管理できるようにします。IDだとよくわからないので場所(イベント)の名前や、後述の、タッチしたおさいふケータイでブラウザ表示するURL、おまけ機能で用意したイベントごとのポイントを追加しています。
細かい設定文章で書くのはとても大変なのと、なんとなく触ってみれば作れちゃう簡単さなので、設定値の詳細は割愛します。設定画面を動画でキャプチャしたものをscreencast.comに用意したので、参考程度にご覧くださいませ。
- カスタマオブジェクトの設定画面(www.screencast.com)
- Felicaタッチ履歴オブジェクトの設定画面(www.screencast.com)
- 設定場所オブジェクトの設定画面(www.screencast.com)
※2008.10.28追記
動画だけだとあまりにも見にくいので、Googleスプレッドシート上にテーブル定義を置きました。
Felicaでsalesforce :テーブル定義(spreadsheets.google.com)
設定内容を簡単にエクスポート→インポートする方法を探しましたが、残念ながら見つけられず、苦肉の策です。。
少しだけTipsをメモしておきます。
項目を作成するときに「数式」を活用する。
Feliaタッチ履歴上にあるポイントは設置場所のマスタにあるポイントをそのまま表示しています。↑の3つめの動画の2:50あたりの動きです。これはFelicaタッチ履歴側のポイントを作る時に、型を「数式」にして、値に"設置場所オブジェクトのポイントの項目"を指定することで実現できます。この時、オブジェクト名に"__r"をつけて"place__r"のように、リファレンスを参照するようにしているのがポイントです。
カスタムボタンで直接編集画面を開くようにする。
これはカスタマ画面とFelicaタッチ履歴画面を行き来して紐付け登録するのがわずらわしいので、直接、しかるべき値がセットされた状態で編集画面を開けるようなショートカットボタンのためのカスタムボタンです。
salesforceは、 http://ホスト名/レコードID(salesforceが自動的に付与するID)/
でそのレコードの詳細画面となり、
http://ホスト名/レコードID/e?
で編集画面となるようなURLの体系になっています。さらに、編集画面をFirebug等で掘っていって調べたform内のname値をe?の後にパラメータとして付ければ、初期値をセットできます。
画像の例では、CF00N80000002UG6sというのが、Felicaタッチ履歴の編集画面にある"Felica ID"欄のname値です。
わかりにくいかもしれませんが、、試してみてください。
cgiを作る
cgiのsalesforceへアクセスする部分は、cpanにあるpodのとおりに書いてください。
僕が作ったPerlのソースはGoogle Codeに置いています。
こちらの利用規約に同意のうえでご利用くださいませ。(※2008.10.28 利用規約の部分を追記しました。)
利用規約に同意の上、FelicaデータをSalesforceに送信するcgiのサンプルをダウンロード
2008.10.31 Felicaタッチでイベント予約に連携させるため一部ソースを修正しました。
use libするパスや、ID/Passwordは消しているのでご注意くださいね。
おさいふケータイに値を返す
ピットタッチプラス側で正常に完了したかどうかを判断するため、お作法にそったレスポンスをcgiに書く必要があります。
print qq(Content-Type: text/plain;charset="Shift_JIS"\n\n);
print "res=00\r\n";
print "fnc=02\r\n";
print "url=" . $url . "\r\n";
print "msg=Thank you!!\r\n";
正常系は上のように書きます。改行コードが"¥r¥n"なことにご注意ください。
- res
- ステータスコードです。00以外はすべてピットタッチ側でエラーの反応をします。ギャオー!っとちょっとびっくりするエラー音が出るのでわかりやすいです。
- fnc
- おさいふケータイの場合に呼び出すアプリを指定します。02はブラウザです。他には01:トルカ起動、03:メーラ起動が指定できますが、メーラはSoftbank、auでしか使えないため、ブラウザ起動をおすすめします。詳細はこちら(pittouch.jp)にあります。
- url
- ブラウザで表示するURLです。今回はsalesforceの設置場所オブジェクトにあるURLをそのまま返しています。
- msg
- 僕のケータイ(P705iμ)ではメッセージはでませんが、端末によってはこのメッセージも表示されます。
CGIを作り終わったらすべての作業が終わりです!お疲れさまでした!!端末に何度もピッってやってみて、成功音を噛み締めましょう!!
まとめ
salesforce上の環境構築は、文章で説明するととっても長くなってしまいましたが、カンで触ってれば思いのほか簡単に使えて、かつ高機能なことが実感できることと思います。正直、salesforceと言えばCRM!企業用!と思い込んでしまっていましたところがあって、もったいないことをしてました。Mashup Award2の頃からAPIを提供していただいていたのに。。申し訳ないです。。
salesforceは一開発者にとってもすごく便利なサービスなので改めておすすめします!
今回は必要最低限の部分しか触っていませんが、これだけでも十分使えます。是非みなさまお試しくださいませ!!
最後に、Felicaタッチで来場管理、いかがでしたでしょうか。本を買うと必ずサンプルとして掲載されている類のサービスではありますが、Webでがんばるのはあまり見なかったので、何かしら参考になったらなあと思います!
ふろく
Salesforceについて参考になるサイトのURLやツールをまとめておきます。
- developer.salesforce.co.jp
- salesforceで開発するために必要な情報が集まっています。まずはここをブックマークしましょう。
- search.cpan.org/dist/WWW-Salesforce/
- salesforceのCPANモジュールがあります。
- www.oreillynet.com 1, www.oreillynet.com 2, www.oreillynet.com 3, www.oreillynet.com 4
- WWW::Salesforceの使い方がサンプルソースと一緒に掲載されています。
- App exchange apiリファレンス
- Salesforceのデータ構造やAPIの使い方が掲載されています。読み下すのはかなり大変なので困った時のリファレンスとして。
- AJAX Tools
- salesforceにアドオンして使うツールのセットです。Explorerというツールが、オブジェクト内各項目の型を見たり、素のSOQLを実行してみる環境としてとても便利です。
クリックで拡大します。