Third party CRM Integration wi...
Omni Toolbar
26 min
overview the omni toolbar is exotel’s unified agent workspace that embeds directly into customer crms or internal tools to handle voice, chat, whatsapp, and future channels from a single, consistent interface from a customer’s point of view, the omni toolbar replaces fragmented cti and channel specific widgets preserves context across channels reduces agent training and handling time acts as the single control surface for all interactions if you’ve previously used the generic toolbar integration , think of omni toolbar as the same cti foundation, evolved for omnichannel, scale, and future extensibility who should use omni toolbar the omni toolbar is designed for customers embedding exotel into crms customers building custom agent desktops customers migrating from voice only cti to omnichannel enterprises that want one integration instead of per channel integrations if your agents switch tabs, windows, or tools to manage calls, chats, and whatsapp today — omni toolbar is meant for you core capabilities embeds as a floating or docked toolbar inside your application manages agent login, presence, and state handles inbound and outbound interactions supports voice, chat, whatsapp (channel aware ui) triggers screen pops and contextual actions maintains interaction lifecycle events supports future extensibility without reintegration setup for crm integration (iframe model) the ameyo omni web toolbar is designed to be embedded within an iframe on the third party crm's web page iframe container the third party crm must have a \<div> element with the id ameyoiframediv to contain the toolbar iframe sample url https //< sample url https //< youreccdomainname >/omniapp/toolbar/index html initialization script the integration requires importing the sdk javascript file and initializing the sdk with the crm context \ javascript omni toolbar is embedded into your application ui it runs independently but communicates via defined events your application remains the source of truth for navigation and data const sdkconfig = { context "crm", origin "https //\<your crm domain>", instanceid "ameyoiframe" // the iframeid embedding the crm }; // after loading sdk module sdk initialize(sdkconfig); event driven interaction model omni toolbar communicates via events , not tight coupling typical lifecycle toolbar initializes agent logs in interaction arrives (call/chat/whatsapp) toolbar emits interaction event host app reacts (screen pop, fetch data) agent completes interaction toolbar emits wrap up event this model keeps integrations stable even as channels evolve screenshots of a sample integration and how events are passed core integration usecases & sdk mapping the following table maps the actions required for standard generic toolbar integration to the omni sdk apis and events generic toolbar action sdk interaction flow omni sdk api / event category crm to ameyo (e g , single sign on) the crm system initiates a request to authenticate and log in the agent into the omni toolbar login / forcelogin session management crm to ameyo (e g , click to dial) the crm initiates an action (e g , clicking a phone number) to start a new outbound interaction initiateinteraction interaction management ameyo to crm (e g , screen pop) the ameyo platform (on call arrival or connection) sends a real time notification to the crm to fetch and display customer details showcrm (event) crm & record handling crm to ameyo (e g , call disposition) the crm collects wrap up data and sends it back to the omni toolbar to officially end the interaction in the ameyo system disposeinteraction interaction management initialise sdk api name params description sample response initialize config = { context string (“crm” ) origin string instanceid string (default is ameyoiframe) } to initialise the sdk setbaseurl url string getbaseurl no params required onloadhandler isloaded boolean to inform the toolbar/ui that the app/crm is loaded session and authentication apis session sso in ameyo requires the user id to be the same in both ameyo and the crm the crm calls the login api api name params description sample response login username string password string authpolicy string (optional) login a user result successfully logged in forcelogin username string password string authpolicy string (optional) forcelogin a user result successfully logged in getselectedextension no params required get extension data while extension selection or while change selection { callcontextid phone "1234567890" } logout no params required logout user result logout successful getcurrentuser no params required get current logged in user data { "userid" "executive", "usertype" "executive", "username" "executive" } getselectedcampaigns no params required get campaign data while campaign selection or while changing campaign \[ { "campaignid" 47, "campaignname" "whatsapp chat", "campaigntype" "omni campaign", "processid" 5 } ] getagentsession no params required get all agent session data { "userid" "executive", "usertype" "executive", "terminalinfo" null, "username" "executive", "breakstatuses" \[ "coffee break", "dinner break", "lunch break" ], "readstatuses" \[ "available" ], "campaigninfos" \[ { "campaignname" "whatsapp chat", "campaignid" 47, "campaigntype" "omni campaign", "dialtimeout" 30, "blendgroupid" null, "defaultworking" false, "primarycampaign" false, "processid" 5, "wraptimeout" 10, "acwconnected" 30, "acwnotconnected" 30, "isacwconnectedenabled" false, "localivrinfos" \[], "campaigntpvbean" { "campaignid" 47, "tpvname" \[], "tpvphone" \[] }, "acwconnectedenabled" false } ], "telephonychannel" null, "knowledgebaseurl" "https //www ameyo com/", "pinginterval" 20000, "pingnotificationtimeout" 60000, "sessointimeout" 180000, "commandtimeout" 20000, "maxphonelengthallowed" 20, "transferconfiguration" null, "conferconfiguration" null, "maxnumberofcharacterstodisplayincampaign" 999, "precontextid" null, "prephone" null, "maskedprivileges" \[], "defaultready" false, "addcustomertodial" true, "dialphoneenable" true, "allowinternalchat" true, "allowlocalivr" true, "allowsuccessivecalls" true, "overrideselfcallback" true, "shouldholdbeforeconfer" false, "shouldunholdbeforetransfer" false, "holdallonconferenable" false, "shouldallowtransfertoassignedcampaignsonly" false, "shoulddisableonvrdown" true, "allowscreenrecord" false, "autoselectsingleassignedcampaign" true, "weburl" "http //www ameyosuite com", "campaignmaskedprivilegemap" { "campaignid 127" \[], "campaignid 47" \[], "campaignid 172" \[] }, "viewprivileges" null, "loginproperties" {}, "preferences" {}, "srsip" "localhost", "srsport" "8889", "agentbreaktimethreshold" "", } session events event name description sample response loginstatus gets the data for login status of the user login status event received successfully logged in useravailabilitystatuschanged gets the data for change in user availability user availability status changed { "isavailable" true, "autocallstatus" true, "statusdescription" "available", "autocallstatechangecause" "agent set ready" } campaignselected gets the selected campaign details, including campaign id and name campaign selected \[{ "campaignid" 172, "campaignname" "mohit omni camp", "campaigntype" "omni campaign", "processid" 78 }] extensionselected gets the selected extension details, including extension id and name extension selected { "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn mgaqeot4caaxyr1nqw1fakjcl0gztsulcfl3zccbxm3o2ut6iumdbsoeke0eooscaarlwzhdbaglflgoqknznhg0rlvx86n0ydvm2meotm7hp2m1hx7c 6 uce 16" } interaction and call management apis these apis cover the telephony operations initiated from the crm (e g , click to dial) or the subsequent call management functions dialing and interaction apis api name params description sample response initiateinteraction channeltype string (“voice” | “chat”) channeldetails { phone string (optional) name string (optional) appid string (optional) \[key string] any } campaignid number customerid number (optional) searchables string\[] (optional) interactionrelationid? string (optional) channelsubtype string (optional) additionalinfo any (optional) initiates an interaction { "result" "success", "reason" "success" } disposeinteraction channeltype string (“voice” | “chat”) interactionid string dispositioncodeid number notes string (optional) additionalparams { callbacktime string phone string isselfcallback boolean } (optional) callback time example "2025 07 06t09 56 40+0530" (iso 8601) disposes an interaction result ok disposeandinitiatenewinteraction this api is for voice only interactionid string dispositioncodeid number phone string notes string (optional) disposes and initiates a new interaction result ok getallliveinteractionsforagent no params required fetches the details of all live interactions of the agent \[ { "data" { "id" "f57fe43b bd7a 4c31 8498 5724ee2507", "title" null, "customer id" 1, "last assigned user id" "anshika agent", "last assigned user name" "anshika agent", "contact center id" 5, "process id" 78, "last campaign id" 172, "last campaign name" "mohit omni camp", "last queue id" 134, "last queue name" "dev queue", "last disposition" null, "interaction media id" "d764 6879fb2e vchat 70", "channel name" "chat", "sub channel" "webchat", "direction" "incoming", "date added" "2025 07 18t11 13 36 753+00 00", "date modified" "2025 07 18t11 13 37 116+00 00", "date disposed" null, "interaction relation id" "f57fe43b bd7a 4c31 8498 5724ee2507", "status" "open", "reopen count" 0, "last reopen time" null, "first assigned date" "2025 07 18t11 13 37 085+00 00", "last assigned date" "2025 07 18t11 13 37 085+00 00", "linked objects" \[], "channel data" null, "related interactions" null, "linked connector id" 23, "last application instance id" "app server fwg2myiupg", "additional info" { "xmpp metadata" { "users" \[ { "id" "anshika agent", "name" "anshika agent", "xmppid" "xmpp user 4qlt4tvgcb\@chat service 7ccd544c55 h4nvc" } ], "customer" { "name" "test", "xmppid" "xmpp customer conference j6tncvidns" }, "xmppchatroomid" "xmpp chatroom conference jpmxwvgq34\@conference chat service 7ccd544c55 h4nvc" }, "chat customer crt object id" "d764 6879fb2e dccf 37" } }, "http code" 200, "error data" null } ] getcurrentinteraction no params requires fetches the details of the interaction that the agent is currently on { "data" { "id" "87b41b89 8a79 44dd a8d1 2ba7882507", "title" null, "customer id" 735076692678909, "customer name" "anshika", "last assigned user id" "anshika agent", "last assigned user name" "anshika agent", "contact center id" 5, "process id" 78, "last campaign id" 172, "last campaign name" "mohit omni camp", "last queue id" 0, "last disposition" null, "interaction media id" "d764 6879fb2e vcall 105", "channel name" "voice", "sub channel" null, "direction" "outgoing", "date added" "2025 07 18t11 12 34 898+00 00", "date modified" "2025 07 18t11 13 04 457+00 00", "date disposed" null, "interaction relation id" "87b41b89 8a79 44dd a8d1 2ba7882507", "status" "open", "reopen count" 0, "last reopen time" null, "first assigned date" "2025 07 18t11 12 34 898+00 00", "last assigned date" "2025 07 18t11 13 04 457+00 00", "linked objects" \[], "channel data" null, "related interactions" null, "linked connector id" 23, "last application instance id" "app server fwg2myiupg", "additional info" { "voice customer crt object id" "d764 6879fb2e vce 91" } }, "http code" 200, "error data" null } getisinteractionownedbyuser no params required will get the ownership status of the interaction, for example, in case of confer, the call lands on agent a and then agent b is added in conference, if we check ownership status at agent b it will show false true interaction lifecycle events these events are crucial for synchronizing the state of a call between the ameyo toolbar and the external crm interactioninitiated gets the data for the interaction, the channel, the user and the customer for which the interaction has been initiated integration interactioninitiated event received { "interactionid" "cd787e9a fac0 4f1e b823 a998532507", "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 20" }, "customercrtobjectid" "d279 6874b064 vce 6", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } callringing fetches information about the call, the user and the customer to whom it was made while the call is in ringing state callringing event received { "interactionid" "7ea1bd1b 5983 4f23 970a 0d99642507", "campaignid" 172, "queueid" null, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn rrtuxjxpn7ecoijptfsj2ubcbmgbwt4pfcaug03kndqfxkjfbl7gx0dhrqduslveya7va4azpqhltssmx8z6fnw44p8iwuk5bdjknzl4wxi0cljiyj8j 78 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 35" }, "customercrtobjectid" "d279 6874b064 vce 19", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } interactionconnected gets the data for the interaction, the channel, the user, and the customer to which the interaction is connected to interactionconnected event received { "interactionid" "c15a278d 66ff 47ed a0c0 cba5492507", "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 21" }, "customercrtobjectid" "d279 6874b064 vce 7", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } interactiondisconnected gets the data for the interaction, the channel, the user, and the customer from which the interaction is disconnected interactiondisconnected event received { "interactionid" "cd787e9a fac0 4f1e b823 a998532507", "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 20" }, "customercrtobjectid" "d279 6874b064 vce 6", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } interactiondisposed gets the data for the interaction, the channel, the user, and the customer for which the interaction is disposed along with the disposition details of the interaction interactiondisposed event received { "interactionid" "c15a278d 66ff 47ed a0c0 cba5492507", "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 21" }, "dispositiondetails" { "dispositionclass" "closed", "dispositioncode" 588, "callnotes" "" } } interactionended gets the data for the interaction, the channel, the user, and the customer for which the interaction is ended interactionended event received { "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice" }, "customercrtobjectid" "d279 6874b064 vce 6", "customerdetails" {} } customerlinkedtointeraction gets the data for the interaction and the channel to which the customer is linked to along with the linked customer details interactionlinked event received { "interactionid" "cd787e9a fac0 4f1e b823 a998532507", "campaignid" 172, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 20" }, "customercrtobjectid" "d279 6874b064 vce 6", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } customerunlinkedtointeraction gets the data for the interaction and the channel from which the customer is unlinked from along with the unlinked customer details { "interactionid" "83937022 6ddd 4194 9395 4bc7c72507", "campaignid" 172, "queueid" null, "usercrtobjectid" "d279 68786f8d ses executive appid app server phnem4ngw4 ipuujtau5nwcqc4keowjiogd6jthdzlfvqd2gi4lwtbk5apw5t8ulxl8dvwfui6azvob5hxy4ituo1vt80k9aycexjpcgpvwoy8w6qpq5vgullwinas7 940 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 68786f8d vcall 362" }, "customercrtobjectid" "d279 68786f8d vce 329", "customerdetails" { "customerid" null, "name" null, "phone" "1234567890" } } interactiontransferred gets the data for the interaction, the user and the channel for which the interaction has been transferred along with the transfer details interactiontransferred event received { "interactionid" "c15a278d 66ff 47ed a0c0 cba5492507", "transfertype" "transfertouser", "transfercontextid" "moh5", "channeltype" "voice", "channeldetails" { "callid" "d279 6874b064 vcall 21", "crtobjectid" "d279 6874b064 ses moh5 appid app server wboswo8hqn mbns0gzypxajbulswjqotsnn7liktcaj8qmjqxrzbvwal2lisgaw70a48bvdjlbdsj4pznpo40huakxf5zd4wa7keo8v0dcn2stuw1vqmt6wha5duxd0 22 uce moh5crjkuz5z\@6", "membercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5" }, "campaignid" 172 } interactionconferred gets the data for the interaction, the user and the channel for which the interaction has been conferred along with the confer details interaction conferred { "interactionid" "0c431e04 e78d 454b a0ec bc2aa72507", "conferedtype" "confertophone", "status" "initialized", "conferedcontextid" "8368941654", "channeltype" "voice", "channeldetails" { "callid" "d279 6874b064 vcall 23", "crtobjectid" "d279 6874b064 vce 11", "membercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5" }, "campaignid" 172 } getisinteractionownedbyuser automatically checks ownership status for current interaction, ie, interaction on which agent’s screen is false crm & record handling screen pop and customer information the screen pop functionality is a core use case, where the crm displays customer information upon a call's arrival or initiation api name params description sample response setrecordinfoforinteraction interactionid string recordid string recordtype string recordname string additionalinfo any (optional) stores the resolved customer details for the current interaction { "data" "{\\"crtobjectid\\" \\"d279 68786f8d vce 49\\",\\"info\\" {\\"recordid\\" \\"1\\",\\"recordname\\" \\"recordname\\",\\"recordtype\\" \\"contact\\"},\\"campaigncontextid\\" 172,\\"actiontype\\" \\"add or update\\"}" } showmultiplerecordsforinteraction interactionid string, recordsinfo crmrecordinfo\[] crmrecordinfo = { recordid string, recordtype string, recordname string, additionalinfo any(optional) } displays all identified customers and their associated information on the user interface during a live interaction //customer info will be displayed on ui showmultiplerecordsforpreview phone string, recordsinfo crmrecordinfo\[] crmrecordinfo = { recordid string, recordtype string, recordname string, additionalinfo any(optional) } displays all customers and their associated information when customer details are previewed for a given phone number //customer info will be displayed on ui sendcurrentcrmrecordopened crmrecordinfo = { recordid string, recordtype string, recordname string, additionalinfo any(optional) } sends currently opened object information to ui //displays currently opened object's info on ui getallcontacts connectorid string, objectid string fetches all contacts for a connector id and object id \[ \[ { "field" "id", "value" "003dl000000pun1qac", "type" "id" }, { "field" "firstname", "value" "jack", "type" "string" }, { "field" "lastname", "value" "rogers", "type" "string" }, { "field" "phone", "value" "(336) 222 7000", "type" "phone" }, { "field" "otherphone", "value" null, "type" "phone" } ], \[ { "field" "id", "value" "003dl000000pun3qac", "type" "id" }, { "field" "firstname", "value" "andy", "type" "string" }, { "field" "lastname", "value" "young", "type" "string" }, { "field" "phone", "value" "(785) 241 6200", "type" "phone" }, { "field" "otherphone", "value" null, "type" "phone" } ] ] getallcases connectorid string, objectid string fetches all cases for a connector id and object id \[ \[ { "field" "id", "value" "500dl000001onehqam", "type" "id" }, { "field" "subject", "value" "performance inadequate for second consecutive week", "type" "string" }, { "field" "description", "value" null, "type" "textarea" } ], \[ { "field" "id", "value" "500dl000001oneiqam", "type" "id" }, { "field" "subject", "value" "starting generator after electrical failure", "type" "string" }, { "field" "description", "value" null, "type" "textarea" } ] ] createcase objecttype string, data any, connectorid string creates a new case updateobject objecttype string, data any, connectorid string, objectid string updates the attached object searchcase connectorid string, objecttype string, search string, searchfield string, limit number, offset number searches the case based on fields \[ \[ { "field" "id", "value" "500dl000001onehqam", "type" "id" }, { "field" "subject", "value" "performance inadequate for second consecutive week", "type" "string" }, { "field" "description", "value" null, "type" "textarea" } ] ] senddatatocrm contextdata any sends data from the app to crm //shows whatever data is sent in the api senddatatoapp contextdata any sends data from crm to app //shows whatever data is sent in the api crm events event name description sample response showcrm gets the configured crm data along with the interaction, user and customer details showcrm event received { "interactionid" "cd787e9a fac0 4f1e b823 a998532507", "userid" "executive", "campaignid" 172, "queueid" null, "usercrtobjectid" "d279 6874b064 ses executive appid app server wboswo8hqn s0qx4novcto6xz1jkt54lf7zkzsx8yysjydp3iqlnfzluxcg22oimkud4l7covcm70oa5lkbvmnuam2twloo0cvuu79wcccihdgfsskqmgc1m2rkha5y 53 uce 1234567890\@5", "channeldetails" { "channeltype" "voice", "associationtype" "manualdial association", "callid" "d279 6874b064 vcall 20" }, "customercrtobjectid" "d279 6874b064 vce 6", "customerdetails" { "customerid" 735076692678909, "name" "anshika", "phone" "1234567890" } } openrecord opens the record on the crm onattachbuttonclick links current interaction with crm customer onunattachbuttonclick unlinks current interaction with crm customer oncreatebuttonclick to create object on crm getcurrentcrmrecordopened fetches current crm record handlepreview searches customer on crm on preview click handleinteractiondisposed sends interaction disposition related information to crm for activity dumping receivedatafromapp crm receives data from app //data sent from app is seen in crm receivedatafromcrm app receives data from crm //data sent from crm is shown in app disposition code retrieval the crm can retrieve the two level disposition codes (disposition class and disposition code) from ameyo to display a custom disposition screen api name params description sample response getdispositioncodeswithdispositionclass campaignid number gets the disposition class and corresponding codes for a given campaignid \[ { "classid" 588, "classname" "status", "dispositioncodebean" \[ { "dispositioncodeid" 1344, "dispositioncodename" "open" }, { "dispositioncodeid" 1345, "dispositioncodename" "closed" }, { "dispositioncodeid" 820, "dispositioncodename" "new" } ] } ] get configurations api name params description sample response getomnicrmobjectconfiguration no params required gets the details of all the objects for the crm \[ { "id" 33, "crm connector id" 23, "object type" "case", "objects metadata" { "case" { "is visible" true, "field metadata" \[ { "field name" "id", "label" "case id", "crm field type" "string", "field type" "id", "should show on preview" true, "is required in object creation" false, "is searchable" true, "standard field name" "", "priority" 1, "should hide on object creation" true, "complex fields" null, "required in object creation" false, "searchable" true }, { "field name" "subject", "label" "subject", "crm field type" "string", "field type" "string", "should show on preview" true, "is required in object creation" true, "is searchable" true, "standard field name" "", "priority" 2, "should hide on object creation" false, "complex fields" null, "required in object creation" true, "searchable" true }, { "field name" "description", "label" "description", "crm field type" "string", "field type" "textarea", "should show on preview" true, "is required in object creation" false, "is searchable" false, "standard field name" "", "priority" 3, "should hide on object creation" false, "complex fields" null, "required in object creation" false, "searchable" false } ], "visible" true } }, "date added" "2024 08 13t10 48 33 862+00 00", "date modified" "2024 08 13t10 48 33 862+00 00", "ref" 1, "version" 1 } ] getomnicrmconfiguration no params required fetches the details of the crm configuration { "crm connector id" 23, "process id" 78, "crm type" "salesforce", "crm domain" "https //exotel88 dev ed develop my salesforce com", "crm version" "", "syncing enabled" false, "syncing mode" "periodic", "record syncing interval" 3600000, "record syncing complete" true, "batch size" 1000, "max number of distinct recordings" 3, "date added" "2024 08 13t10 46 39 613+00 00", "date modified" "2025 01 15t10 30 53 334+00 00", "ref" 1, "version" 5 } getphonenumberforsearch no params required fetches the customer phone that is added on the start interaction screen //will get the phone number entered getprimarycolumnname no params required fetches the primary column name "id" http communication api name params description sample response invokeeccapi microservice microservices url string method string (“get” | “post” | “put” | “delete”) queryparams record\<string, any> (optional) data record\<string, any> | formdata (optional) ismultipart boolean (optional) url is api path here microservices{ appserver = 'appserver', cms = 'cms', cfs = 'cfs', data engine = 'data engine', callback server = 'callback server', customer manager = 'customer manager', chat service = 'chat service', interaction service = 'interaction service', chat bosch service = 'chat bosch service' } this api is used to invoke appserver/cms/cfs/data engine/callback server/customer manager/ chat service/interaction service/chat bosch service {"searchables" \["id","first name","phone1"] } //this is a sample response from one appserver api invokethirdpartyapi url string method string (“get” | “post” | “put” | “delete” | “patch”) headers record\<string, string> (optional) queryparams record\<string, any> (optional) data record\<string, any> | formdata (optional) ismultipart boolean (optional) this api is used to invoke any third party api { "status" 200, "data" { "page" 2, "per page" 6, "total" 12, "total pages" 2, "data" \[ { "id" 7, "email" "michael lawson\@reqres in", "first name" "michael", "last name" "lawson", "avatar" "https //reqres in/img/faces/7 image jpg" } ], "support" { "url" "https //contentcaddy io?utm source=reqres\&utm medium=json\&utm campaign=referral", "text" "tired of writing endless social media content? let content caddy generate it for you " } }, "statustext" "" ui methods api name params description sample response setlogininfo username string token string populates login info on ui //data will be visible on login screen ui populatechanneldetailsfornewinteraction channeltype string channelsubtype string channeldetails { campaignid string appname string phone string name string } populates the details to set details to start an interaction //data will be visible on the start interaction screen on ui setextensioninfo callcontextid number phone string populates the extension info on the select extension and the change extension screen //data will be visible on the select/change extension screen on ui triggertoastnotification message string variant string ('success' | 'error' | 'warning' | 'info') triggers a toast notification for the user //a toast notification will be visible on user screen triggerdesktopnotification notificationtype string notificationsubtype string subject string message string triggers a desktop notification for the user //a desktop notification will be visible on user screen ui events event name description sample response windowvisibilitychanged checks if the current window is visible or not { iswindowvisible true } sendlifecycleevent gets details like app is focused or not, loaded or not, when it is registered "focused" receivedata receives data from other apps //can see whatever is sent from the other app notification events event name description sample response notification triggers all the details regarding a bell notification including notification severity, type and message notification { "notificationid" "d279 6874b064 notify 2441", "displaymessage" "call missed!! customer name anshika contact number 01234567890 missed call time mon jul 14 14 01 45 ist 2025", "severity" 2, "type" "application notification type", "subtype" "notification missed call type", "specificinfo" { "contextid" 52, "context" "missed call", "campaignid" 172, "customerid" 735076692678909, "name" "anshika", "contact" "01234567890", "dateadded" "2025 07 14 14 01 45 899", "phoneinfo" { "phone" "01234567890", "displayphone" "01234567890" }, "additionalparams" { "notificationid" "d279 6874b064 notify 2441", "context" "missed call" } }, "consolidationcount" 0, "dateadded" "2025 07 14t08 31 48 925z" } internal communication for custom logic and data synchronization between the embedded toolbar app and the main crm page srore apps data api name params description sample response get key string gets the value of a key from the local storage result "qwerty" set key string value string sets the key and it’s corresponding value in the local storage result successfully set store item //the key can be checked in local storage delete key string deletes a key from the local storage result successfully deleted store item //the key will now be removed from the local storage appinstance api name params description sample response getallinfo appid string fetches information for all loaded apps getinfo instanceid string fetches information for app based on instanceid senddatatoapp instanceid string, contextdata any sends data from one app to the other app based on instanceid //shows data sent in contextdata events event name description sample response receivedata receives data from other apps //can see whatever is sent from the other app error handling the sdk provides explicit error codes to aid in debugging integration issues error type error code description timeout 1000 request took too long and timed out required field missing 2001 a mandatory field (e g , phone in initiateinteraction) was not provided http error 3000 an http related issue occurred (e g , 404, 500) data not found 4000 requested data could not be located or does not exist invalid origin 1003 request came from an unauthorized or untrusted source
Have a question?
Our super-smart AI, knowledgeable support team and an awesome community will get you an answer in a flash.
To ask a question or participate in discussions, you'll need to authenticate first.
