A ruby client for the Dialog API.
- Amazon Alexa (soon)
- Google Actions (soon)
- Facebook Messenger
- Telegram
- Kik (soon)
- Twilio Programmable Chat (soon)
- Twilio SMS
gem install dialog-apiOr with bundler:
gem 'dialog-api', require: 'dialog-api'This library needs to be configured with your API token which is available in your personal account, and a bot ID.
dialog = Dialog.new({
api_token: ENV['DIALOG_API_TOKEN'],
bot_id: ENV['DIALOG_BOT_ID'],
on_error: Proc.new do |status, message, detail|
p [status, message, detail]
end
})See docs.dialoganalytics.com/reference/track
payload = {
message: {
platform: "messenger",
provider: "dialog-ruby",
mtype: "text",
sent_at: 1482266741.18,
nlp: {
intents: [
{
name: "rocket.launch",
confidence: 0.98
}
]
},
properties: {
text: "Launch some space rockets"
}
},
conversation: {
distinct_id: "da58db1e-da73-4628-9dd6-11a524cc3f80"
},
creator: {
distinct_id: "d5ae3f5f-1645-40c3-a38a-02382cd0ee49",
type: "interlocutor",
username: "@elon",
first_name: "Elon",
last_name: "Musk",
email: "elon@spacex.com",
gender: "male",
locale: "US",
phone: "1234567890",
profile_picture: "http://spacex.com/elon.jpg",
timezone: -5
}
}
dialog.track(payload)Send events to Dialog to keep track of your custom logic. Optionally pass an Interlocutor's distinct id to tie the event to one of your bot's interlocutors. See docs.dialoganalytics.com/reference/event#create
dialog.event('subscribed', 'interlocutor_distinct_id', { custom: 'value' })Record clicks by interlocutors inside a conversation using a trackable link. For every links that needs to be tracked, generate a trackable URL by passing the interlocutor's distinct Id (provided by the platform or provider) and the url to the link method. See docs.dialoganalytics.com/reference/click-tracking
dialog.link('http://example.com', interlocutor_distinct_id)
# => https://api.dialoganalytics.com/v1/b/7928374/clicks/?id=123456&url=http%3A%2F%2Fexample.comModify the current track payload about to be sent to Dialog's API with this helper method.
For example, you can specify a message name:
dialog.attach('welcome')
dialog.attach({ message: { name: 'welcome' }}) // equivalentThis will modify the track payload:
{
message: {
name: "welcome",
...
},
conversation: { ... },
creator: { ... }
}See docs.dialoganalytics.com/reference/message#retrieve
dialog.message(conversation_id, message_id)List all messages in a conversation. See docs.dialoganalytics.com/reference/message#list
dialog.messages(conversation_id)See docs.dialoganalytics.com/reference/conversation#retrieve
dialog.conversation(conversation_id)See docs.dialoganalytics.com/reference/conversation#list
dialog.conversationsSee docs.dialoganalytics.com/reference/interlocutor#list
dialog.interlocutorsSee docs.dialoganalytics.com/reference/interlocutor#retrieve
dialog.interlocutor(interlocutor_id)See docs.dialoganalytics.com/reference/interlocutor#update
dialog.update_interlocutor(interlocutor_id, params)To create an interlocutor, use the track endpoint. An interlocutor must initially be created in association with a conversation. See docs.dialoganalytics.com/reference/track
Different parts of your application may require different types of configurations or even sending to multiple bots. In that case, you can initialize multiple instances of Dialog with different settings:
messenger_dialog = Dialog.new(api_token: ENV['DIALOG_API_TOKEN'], bot_id: 'messenger_bot_id')
kik_dialog = Dialog.new(api_token: ENV['DIALOG_API_TOKEN'], bot_id: 'kik_bot_id')See the API docs.
Run all tests:
bundle exec rspec