LoginSignup
7
9

More than 5 years have passed since last update.

Layer-rubyでLayerを使う

Last updated at Posted at 2015-09-19

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 IDPlatform 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] をそれぞれ先ほどメモしたものに書き換えてください。

app.rb
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のアプリ側でなにかワードをフックして外部サーバに送信する方法を別途実装する必要があります。
お試しあれ。

7
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9