Crisp API Wrapper
The Crisp API Ruby wrapper. Authenticate, send messages, fetch conversations, access your agent accounts from your Ruby code.
Copyright 2023 Crisp IM SAS. See LICENSE for copying information.
- 📝 Implements: REST API Reference (V1) at revision: 16/01/2023
- 😘 Maintainer: @valeriansaliou, @eliottvincent
Usage
You may follow the REST API Quickstart guide, which will get you running with the REST API in minutes.
Add the library to your Gemfile:
gem "crisp-api", "~> 1.1.14"
Then, import it:
require "crisp-api"
Build a new authenticated Crisp client with your identifier and key tokens.
client = Crisp::Client.new
client.set_tier(tier)
client.authenticate(identifier, key)
Then, your client is ready to be consumed!
Authentication
To authenticate against the API, obtain your authentication token keypair by following the REST API Authentication guide. You'll get a token keypair made of 2 values.
Keep your token keypair values private, and store them safely for long-term use.
Then, add authentication parameters to your client instance right after you create it:
client = Crisp::Client.new
# Authenticate to API with your plugin token (identifier, key)
# eg. client.authenticate("5c0595b2-9381-4a76-a2e0-04aa00c1ede7", "3bdb0812d0f5352bf68901ddc731434dade419b98507971905acdd2f967df61c")
client.set_tier("plugin")
client.authenticate(identifier, key)
# Now, you can use authenticated API sections.
Resource Methods
Most useful available Crisp API resources are implemented. Programmatic methods names are named after their label name in the REST API Reference.
All methods that you will most likely need when building a Crisp integration are prefixed with a star symbol (⭐).
In the following method prototypes, crisp is to be replaced with your Crisp API instance. For example, instanciate client = Crisp() and then call eg: client.website.list_conversations(website_id, 1).
When calling a method that writes data to the API (eg. send a message with: client.website.send_message_in_conversation()), you need to submit it this way:
website_id = "6497e4a4-b17c-41e0-bfea-eea97ba8115a"
session_id = "session_f32bc993-f7ce-41af-bcd1-110fc147a392"
client.website.(
website_id, session_id,
{
"type" => "text",
"content" => "This message was sent from ruby-crisp-api! :)",
"from" => "operator",
"origin" => "chat"
}
)
⚠️ Note that, depending on your authentication token tier, which is either user, website or plugin, you may not be allowed to use all methods from the library. When in doubt, refer to the library method descriptions below. Most likely, you are using a plugin token.
Website
Website Conversations
- ⭐ List Conversations: Reference
client.website.list_conversations(website_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" page_number = 1 client.website.list_conversations(website_id, page_number);- Search Conversations: Reference
client.website.search_conversations(website_id, page_number, search_query, search_type, search_operator, include_empty, filter_unread, filter_resolved, filter_not_resolved, filter_mention, filter_assigned, filter_unassigned, filter_date_start, filter_date_end, order_date_created", order_date_updated)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" page_number = 1 client.website.list_conversations(website_id, page_number);Website Conversation
- ⭐ Create A New Conversation: Reference
client.website.create_new_conversation(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.create_new_conversation(website_id);- Check If Conversation Exists: Reference
client.website.check_conversation_exists(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.check_conversation_exists(website_id, session_id);- ⭐ Get A Conversation: Reference
client.website.get_conversation(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.get_conversation(website_id, session_id);- Remove A Conversation: Reference
client.website.remove_conversation(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.remove_conversation(website_id, session_id);- Initiate A Conversation With Existing Session: Reference
client.website.initiate_conversation_with_existing_session(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.initiate_conversation_with_existing_session(website_id, session_id);- ⭐ Get Messages In Conversation: Reference
client.website.get_messages_in_conversation(website_id, session_id, query)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.(website_id, session_id, query);- ⭐ Send A Message In Conversation: Reference
client.website.send_message_in_conversation(website_id, session_id, query)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" query = { "type" => "text", "from" => "operator", "origin" => "chat", "content" => "Hey there! Need help?" } client.website.(website_id, session_id, query);- Update A Message In Conversation: Reference
client.website.update_message_in_conversation(website_id, session_id, fingerprint, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" fingerprint = 524653764345 data = "Hey there! Need help?" client.website.(website_id, session_id, fingerprint, data);- Compose A Message In Conversation: Reference
client.website.compose_message_in_conversation(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "type" => "start", "from" => "operator" ] client.website.(website_id, session_id, data);- ⭐ Mark Messages As Read In Conversation: Reference
client.website.mark_messages_read_in_conversation(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "from" => "operator", "origin" => "urn:crisp.im:slack:0", "fingerprints" => [ "5719231201" ] ] client.website.(website_id, session_id, data);- ⭐ Mark Messages As Delivered In Conversation: Reference
client.website.mark_messages_delivered_in_conversation(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "from" => "operator", "origin" => "urn:crisp.im:slack:0", "fingerprints" => [ "5719231201" ] ] client.website.(website_id, session_id, data);- ⭐ Get Conversation Routing Assign: Reference
client.website.get_conversation_routing_assign(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.get_conversation_routing_assign(website_id, session_id);- ⭐ Assign Conversation Routing: Reference
client.website.assign_conversation_routing(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "assigned" => [ "user_id" => "a4c32c68-be91-4e29-8a05-976e93abbe3f" ] ] client.website.assign_conversation_routing(website_id, session_id, data);- ⭐ Get Conversation Metas: Reference
client.website.get_conversation_metas(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.(website_id, session_id);- ⭐ Update Conversation Metas: Reference
client.website.update_conversation_metas(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "nickname" => "John Doe", "email" => "john.doe@acme-inc.com", "segments" => [ "happy", "customer", "love" ], "data" => [ "type" => "customer", "signup" => "finished" ] ] client.website.(website_id, session_id, data);- List Conversation Pages: Reference
client.website.list_conversation_pages(website_id, session_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" page_number = 1 client.website.list_conversation_pages(website_id, session_id, page_number);- List Conversation Events: Reference
client.website.list_conversation_events(website_id, session_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" page_number = 1 client.website.list_conversation_events(website_id, session_id, page_number);- List Conversation Files: Reference
client.website.list_conversation_files(website_id, session_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" page_number = 1 client.website.list_conversation_files(website_id, session_id, page_number);- Get Conversation State: Reference
client.website.get_conversation_state(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.get_conversation_state(website_id, session_id);- ⭐ Change Conversation State: Reference
client.website.change_conversation_state(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = "unresolved" client.website.change_conversation_state(website_id, session_id, data);- Get Block Status For Conversation: Reference
client.website.get_block_status_for_conversation(website_id, session_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" client.website.get_block_status_for_conversation(website_id, session_id);- Block Incoming Messages For Conversation: Reference
client.website.block_incoming_messages_for_conversation(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = true client.website.(website_id, session_id, data);- Request Email Transcript For Conversation: Reference
client.website.request_email_transcript_for_conversation(website_id, session_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" data = [ "to" => "operator", "email" => "valerian@crisp.chat" ] client.website.request_email_transcript_for_conversation(website_id, session_id, data);Website People (these are your end-users)
- Get People Statistics: Reference
client.website.get_people_statistics(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.get_people_statistics(website_id);- List People Segments: Reference
client.website.list_people_segments(website_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" page_number = 1 client.website.list_people_segments(website_id, page_number);- ⭐ List People Profiles: Reference
client.website.list_people_profiles(website_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" page_number = 1 client.website.list_people_profiles(website_id, page_number);- ⭐ Add New People Profile: Reference
client.website.add_new_people_profile(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = [ "email" => "valerian@crisp.chat", "person" => [ "nickname" => "Valerian Saliou" ] ] client.website.add_new_people_profile(website_id, data);- ⭐ Check If People Profile Exists: Reference
client.website.check_people_profile_exists(website_id, people_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" client.website.check_people_profile_exists(website_id, people_id);- ⭐ Get People Profile: Reference
client.website.get_people_profile(website_id, people_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" client.website.get_people_profile(website_id, people_id);- ⭐ Save People Profile: Reference
client.website.save_people_profile(website_id, people_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" data = [ "email" => "valerian@crisp.chat", "person" => [ "nickname" => "Valerian Saliou" ] ] client.website.save_people_profile(website_id, people_id, data);- Find People Profile By Email: Reference
client.website.find_people_profile_by_email(website_id, email)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" client.website.get_people_profile(website_id, people_id);- ⭐ Update People Profile: Reference
client.website.update_people_profile(website_id, people_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" data = [ "email" => "valerian@crisp.chat", "person" => [ "nickname" => "Valerian Saliou" ] ] client.website.update_people_profile(website_id, people_id, data);- ⭐ Remove People Profile: Reference
client.website.remove_people_profile(website_id, people_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" client.website.remove_people_profile(website_id, people_id);- List People Conversations: Reference
client.website.list_people_conversations(website_id, people_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" people_id = "c5a2f70c-f605-4648-b47f-8c39d4b03a50" page_number = 1 client.website.list_people_conversations(website_id, people_id, page_number);- Add A People Event: Reference
client.website.add_people_event(website_id, people_id, data)- List People Events: Reference
client.website.list_people_events(website_id, people_id, page_number)- Get People Data: Reference
client.website.get_people_data(website_id, people_id)- Save People Data: Reference
client.website.save_people_data(website_id, people_id, data)- Update People Data: Reference
client.website.update_people_data(website_id, people_id, data)- Get People Subscription Status: Reference
client.website.get_people_subscription_status(website_id, people_id)- Update People Subscription Status: Reference
client.website.update_people_subscription_status(website_id, people_id, data)
👉 Notice: The peopleID argument can be an email or the peopleID.
Website Base
- Create Website: Reference
client.website.create_website(data)See Example
client.website.create_website(data);- Get A Website: Reference
client.website.get_website(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.get_website(website_id);- Delete A Website: Reference
client.website.delete_website(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.delete_website(website_id);Website Batch
- Batch Resolve Items: Reference
client.website.batch_resolve_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.batch_resolve_items(website_id, data);- Batch Unresolve Items: Reference
client.website.batch_unresolve_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ] } client.website.batch_unresolve_items(website_id, data);- Batch Read Items: Reference
client.website.batch_read_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.batch_read_items(website_id, data);- Batch Unread Items: Reference
client.website.batch_unread_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ] } client.website.batch_unread_items(website_id, data);- Batch Remove Items: Reference
client.website.batch_remove_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ] client.website.batch_remove_items(website_id, data);- Batch Report Items: Reference
client.website.batch_report_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ], "flag" => "spam" } client.website.batch_report_items(website_id, data);- Batch Block Items: Reference
client.website.batch_block_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ], "blocked" => true } client.website.batch_block_items(website_id, data);- Batch Routing Items: Reference
client.website.batch_routing_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ], "assigned" => { "user_id" => "a4c32c68-be91-4e29-b97e-b3b6af886eaa" } } client.website.batch_routing_items(website_id, data);- Batch Inbox Items: Reference
client.website.batch_inbox_items(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = { "sessions" => [ "session_19e5240f-0a8d-461e-a661-a3123fc6eec9", "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" ], "inbox_id" => "d42e8b3b-ea8f-4e79-a9f8-d0e467fc1c31" } client.website.batch_inbox_items(website_id, data);Website Availability
- Get Website Availability Status: Reference
client.website.get_website_availability_status(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.get_website_availability_status(website_id);Website Operator
- List Website Operators: Reference
client.website.list_website_operators(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.list_website_operators(website_id);- List Last Active Website Operators: Reference
client.website.list_last_active_website_operators(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.list_last_active_website_operators(website_id);Website Settings
- Get Website Settings: Reference
client.website.get_website_settings(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.get_website_settings(website_id);- Update Website Settings: Reference
client.website.update_website_settings(website_id, data)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" data = [ "name" => "Crisp", "domain" => "crisp.chat", "logo" => "https://storage.crisp.chat/users/avatar/website/8c842203-7ed8-4e29-a608-7cf78a7d2fcc/b6c2948d-b061-405e-91a9-2fdf855d1cc0.png", "contact" => [ "email" => "contact@crisp.chat", "phone" => "+33757905447" ], "inbox" => [ "lock_removal" => false, "force_operator_token" => false ], "emails" => [ "rating" => true, "transcript" => true, "enrich" => true, "junk_filter" => true ], "chatbox" => [ "tile" => "default", "wait_game" => false, "last_operator_face" => false, "ongoing_operator_face" => true, "activity_metrics" => true, "operator_privacy" => false, "availability_tooltip" => true, "hide_vacation" => false, "hide_on_away" => false, "hide_on_mobile" => false, "position_reverse" => false, "email_visitors" => false, "phone_visitors" => false, "force_identify" => false, "ignore_privacy" => false, "visitor_compose" => false, "file_transfer" => true, "overlay_search" => true, "overlay_mode" => false, "helpdesk_link" => true, "helpdesk_only" => false, "status_health_dead" => true, "check_domain" => false, "color_theme" => "blue", "text_theme" => "default", "welcome_message" => "default", "locale" => "en", "allowed_pages" => [], "blocked_pages" => [ "status/*/", "docs.crisp.chat/*", "crisp.chat/terms/", "https://crisp.chat/privacy/" ], "blocked_countries" => [ "IT" ], "blocked_locales" => [ "fa", "he" ], "blocked_ips" => [ "8.8.8.8", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "192.168.1.1/24" ] ] ] client.website.update_website_settings(website_id, data);Website Visitors
- Count Visitors: Reference
client.website.count_visitors(website_id)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.count_visitors(website_id);- List Visitors: Reference
client.website.list_visitors(website_id, page_number)See Example
website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" page_number = 1 client.website.list_visitors(website_id, page_number);- Get Session ID: Reference
client.website.get_session_id_by_token(website_id, token)See Example
session_id = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881" website_id = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc" client.website.get_session_id_by_token(website_id, token);
Bucket
- Bucket URL
- Generate Bucket URL: Reference
client.bucket.generate_bucket_url(data)