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-api
Or 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: "[email protected]",
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.com
Modify 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' }}) // equivalent
This 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.conversations
See docs.dialoganalytics.com/reference/interlocutor#list
dialog.interlocutors
See 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