Layerとは
Layerはさまざまなプラットフォーム間を自動で同期できるチャットプラットフォームサービスです。
iOSとAndroidのサンプルアプリでカンタンに試すことができます。
また、それ以外でもREST APIを通してメッセージを送信することができます。
公式ページのDocumentationからたどると、クライアントライブラリが公式にJS用と3rdパーティでRuby向けがあるようなので、使ってみました。
2015/09/19時点では、以下のライブラリがあるようです。
ここでは、layer-rubyを使ってみます。
インストール
bundleを使ってgemをインストールしましょう。bundlerは先にインストールしておきましょう。
bundle init
したあと、生成されたGemfileに以下を追加します。、
gem 'layer-ruby', require: 'layer'
bundle install
でgemがインストールされます。
IDとTokenの取得
Layerにログインしたあと、DashboardからKeysをクリックします。
Staging app ID と Platform API tokens を取得します。
AppID
layer:///apps/staging/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
といった形式で、Layer://
から始まるURL schemeのような文字列です。
Platform API Tokens
Name Your Tokenに名前を入れて、 [Generate a new Token] を押してTokenを取得します。
Conversation IDの取得
Quick Setup時にメッセージを一回送ってるはずなので、その会話宛にメッセージを送ることにしましょう。
Dashboard -> Logを漁って conversation with identifier XXXXXX-XXXXXXXX-XXXXXX-XXXX
みたいな文字列をみつけ、ID部をメモっておきましょう。
サンプルアプリ
ざっと、こんな感じで試してみましょう。
[App ID],[Platform API Token],[Conversation ID] をそれぞれ先ほどメモしたものに書き換えてください。
require 'bundler'
Bundler.require
Layer::Client.configure do |config|
config.app_id = '[App ID]'
config.token = '[Platform API Token]'
end
conversation = Layer::Conversation.find('[Conversation ID]')
loop do
print ">> "
a = gets.chop
conversation.messages.create({ sender: { name: 'Server' }, parts: [{ body: a, mime_type: 'text/plain' }]})
end
bundle exec ruby app.rb
とシェルで実行すると、">>"と表示さます。
なにかメッセージを入力して改行すると、サンプルアプリの会話宛にメッセージが送信されるはずです。
結論
LayerはカンタンにチャットUIを実装できます。
ただ外部のサーバと連携する場合、セキュリティの問題なのか、直にLayerのサーバから既に発言されたメッセージを取得することができません。
ユーザーの発言をキーにしてなにか動作をする場合、iOSやAndroidのアプリ側でなにかワードをフックして外部サーバに送信する方法を別途実装する必要があります。
お試しあれ。