Building Extensions #11: Creating widgets with the JS SDK bundle in Zoho Desk - Event API

Building Extensions #11: Creating widgets with the JS SDK bundle in Zoho Desk - Event API

This series aims to equip developers with all they need to build extensions for Zoho Desk in Zoho Sigma and publish them in Zoho Marketplace.

In our previous post, we discussed Data Storage APIs, their use in extensions, and how to use them in your Zoho Desk extensions. This post will briefly explain the next set of APIs in the JS SDK bundle, Event APIs, and show when and how to use them within Zoho Desk extensions.

Event APIs 

The extension you're intending to build may require you to perform an action upon the occurrence of a particular event in your Desk portal. In order to trigger that action in Zoho Desk, your extension needs to listen to those event occurrences. The Zoho Desk platform provides Event APIs, which is an SDK method that helps you incorporate custom functionalities in your extension when certain events occur in your Zoho Desk portal. The events can be both ticket- and call-related.
  • Ticket events: You can configure extensions to receive information when an event, such as adding a comment to a ticket or opening a different ticket, occurs on the ticket detail page.
  • Call events: You can configure extensions to receive information when a call-related event occurs in your help desk portal.
There are multiple events available both in ticket events and call events. Whenever a particular event occurs, the parameter (Event API) for that event is used to broadcast information from Zoho Desk. The information from that event can then be processed in your extension using other APIs based on your business needs. Every event can be invoked from multiple locations in Zoho Desk; the details of the locations supported by every event and the parameter to be passed to invoke the events are listed here.

Scenario: Let's say you're using Zoho Desk to handle your technical support queries and Zoho Projects to manage your internal tasks. Here, we'll explain a simple use case where an extension could create a task in Zoho Projects automatically whenever the ticket classification of a ticket is changed in Zoho Desk. In this instance, we'll say you classify a ticket as 'problem' in Zoho Desk and get a task created for that ticket in Zoho Projects automatically. Let's see how the Events API can be used to achieve this simple use case in your extension.
 
When an agent triggers an event change in Zoho Desk, the Event API broadcasts the information about the event's occurrence from that ticket and can be fetched for further processing. To create a task in Zoho Projects, you can use Request API to invoke the Create Task API of the Zoho Projects. If you need additional information from the ticket while creating a task, you can use the Data API to get those details.
 
Below are the steps involved to implement this use case:
  • Create a connection in Zoho Sigma with required scopes
  • Create a task in Zoho Projects using the required JS SDK methods
    • Events API: Listen to the event
    • Data API: Fetch required ticket details for creating a task in Projects
    • Request API: Invoke Create Task API in Projects

Creating a connection 

To build this extension, you must establish a connection between Zoho Desk and Zoho Projects with the required scopes. This will allow you to facilitate communication between these two services by invoking their APIs. Please check the Connectors post to learn more about creating connections. Once the connection is established, perform the following in the plugin-manifest.json file and save the file.
  1. Paste the JSON code copied from Sigma in zohoAuthorization
  2. Provide the Zoho Projects base URL (https://projectsapi.zoho.com) in whiteListedDomains
The plugin-manifest file with the connection and whitelisted domain details:
{
    "locale": ["en"],
    "service": "DESK",
    "storage": false,
    "type": "personal",
    "whiteListedDomains": ["https://projectsapi.zoho.com"],
    "modules": {
        "widgets": [
            {
                "location": "desk.ticket.detail.rightpanel",
                "url": "/app/widget.html",
                "name": "Desk Extension",
                "logo": "/app/img/logo.png",
                "icon": "/app/img/icon.png"
            }
        ]
    },
    "cspDomains": {
        "connect-src": []
    },
    "zohoAuthorisation": {
        "type": "connectors",
        "connectionLinkName": "deskproject",
        "connectionName": "DeskProject",
        "serviceName": "zlabs_integration",
        "userAccess": true,
        "isUserDefinedService": false,
        "sharedBy": "696258884",
        "scope": [
            "Desk.tickets.ALL",
            "ZohoProjects.projects.ALL",
            "ZohoProjects.tasklists.ALL",
            "ZohoProjects.tasks.ALL",
            "ZohoProjects.events.ALL",
            "Desk.basic.ALL",
            "ZohoProjects.tags.ALL",
            "ZohoProjects.status.ALL",
            "ZohoProjects.portals.ALL"
        ]
    },
    "connectors": [],
    "config": [],
    "moduleSupport": false
}

Creating a task in Zoho Projects 

Below are the code snippets of different APIs that are used in this extension. The Event API will get triggered whenever the ticket classification is changed by the agent. You need to fetch the response from the broadcasted message and check the value of the ticket classification. According to our use case, we need to create a task if the classification is "problem," so the Request API is called for the same.
 
App.instance.on("ticket_classification.changed", function (data) {
                        classif = data["ticket.classification"];
                        if (classif == "Problem") {
                            
ZOHODESK.request({url: "https://projectsapi.zoho.com/restapi/portal/" + xxx + "/projects/" + yyy + "/tasks/?name=" + encodeURI(ticketSub) + "&description=" + encodeURI(x) + "&priority=" + ticketPriority,
                                headers: {
                                    "Content-type": "application/json",
                                },
                                type: "POST",
                                data: {},
                                connectionLinkName: "deskproject",
                                postBody: {},
                                contentType: "application/json",
                            })
                                .then(function (response) {
                                    var resultparse = JSON.parse(response);
                                    var resultparse2 = JSON.parse(resultparse.response).statusMessage;
                                    var aaa = JSON.stringify(resultparse2);
                                })
                                .catch(function (err) {
                                    console.log(err);
                                });
                        }
                    });
 
All the required ticket details, including the ticket ID, subject of the ticket, ticket description, and the priority status of the ticket are fetched using the Data APIs and passed to the Zoho Projects API. This information will be filled in within the task that is being created.
 
ZOHODESK.get(["ticket.id", "ticket.subject", "ticket.description", "ticket.priority"])
                        .then(function (res) {
                            var result = res.data;
                            var a = JSON.stringify(result);
                            console.log(a);
                            ticketID = result["ticket.id"];
                            ticketSub = result["ticket.subject"];
                            ticketDesc = result["ticket.description"];
                            ticketPriority = result["ticket.priority"];
                            x = ticketDesc.replace(/<[^>]+>/g, "");
                            ticketNumber = result["ticket.number"];
                        })
                        .catch(function (err) {});
 




In this example (full code given below), we have given you a clear picture on when and how to use the Event APIs in building extensions for Zoho Desk. Though other APIs are used too, the core of this extension is triggering an action on the occurrence of an event, which is done by the Event API.
 


While invoking the Zoho Projects API, you would have noticed that the Create Task API takes two important parameters, namely PortalID and ProjectID. These are specific to users; they are needed to decide for which project the task should be created. You may wonder how this should be handled in your extension development. We have config params to help you in such scenarios.
 
We'll discuss the usage of config params in our following post. Stay tuned !
 

<<Previous                                                                                                                                    Next >>                                                                                       

    Access your files securely from anywhere



                          Zoho Developer Community




                                                  • Desk Community Learning Series


                                                  • Digest


                                                  • Functions


                                                  • Meetups


                                                  • Kbase


                                                  • Resources


                                                  • Glossary


                                                  • Desk Marketplace


                                                  • MVP Corner


                                                  • Word of the Day


                                                  • Ask the Experts





                                                            Manage your brands on social media



                                                                  Zoho TeamInbox Resources



                                                                      Zoho CRM Plus Resources

                                                                        Zoho Books Resources


                                                                          Zoho Subscriptions Resources

                                                                            Zoho Projects Resources


                                                                              Zoho Sprints Resources


                                                                                Qntrl Resources


                                                                                  Zoho Creator Resources



                                                                                      Zoho CRM Resources

                                                                                      • CRM Community Learning Series

                                                                                        CRM Community Learning Series


                                                                                      • Kaizen

                                                                                        Kaizen

                                                                                      • Functions

                                                                                        Functions

                                                                                      • Meetups

                                                                                        Meetups

                                                                                      • Kbase

                                                                                        Kbase

                                                                                      • Resources

                                                                                        Resources

                                                                                      • Digest

                                                                                        Digest

                                                                                      • CRM Marketplace

                                                                                        CRM Marketplace

                                                                                      • MVP Corner

                                                                                        MVP Corner





                                                                                          Design. Discuss. Deliver.

                                                                                          Create visually engaging stories with Zoho Show.

                                                                                          Get Started Now


                                                                                            Zoho Show Resources


                                                                                              Zoho Writer Writer

                                                                                              Get Started. Write Away!

                                                                                              Writer is a powerful online word processor, designed for collaborative work.

                                                                                                Zoho CRM コンテンツ










                                                                                                  Nederlandse Hulpbronnen


                                                                                                      ご検討中の方




                                                                                                            • Recent Topics

                                                                                                            • OpenAI Alert! Plug Sample #11 - Next-generation chatbots, Zobot + ChatGPT Assistant

                                                                                                              Hi Everyone! We have great news for all AI enthusiasts and ChatGPT users! The much anticipated Zobot integration with ChatGPT Assistant is now available with Plugs. Note: SalesIQ offers native integration with OpenAI, supporting several ChatGPT models,
                                                                                                            • Contracts Management

                                                                                                              Hello, We are implementing Zoho FSM for our field service operations and, one of the features we are lacking is Service Contract Management. I was told that such feature might be in the pipeline but an estimated launch date for this is not available at
                                                                                                            • Marketing Automation Emails Going to Spam

                                                                                                              Google is trapping all the marketing automation emails in spam. My domain has a perfect reputation and it looks like Zoho has a low reputation which is sending it to spam. When I pull the email out of spam and click on a link in the email, I get this
                                                                                                            • Invalid OAuth Token When Using Zoho CRM API with Postman

                                                                                                              We're in the process of integrating Zoho CRM with our Django backend and currently testing the API endpoints via Postman. I've forked Zoho's official CRM REST API collection in Postman for this. Steps Taken: Created a Self Client via Zoho API Console:
                                                                                                            • Adding Markdown text using Zoho Desk API into the Knowledge Base

                                                                                                              Hi Zoho Community members, We currently maintain the documentation of out company in its website. This documentation is written in markdown text format and we would like to add it in Zoho Knowledge Base. Do you know if there is REST API functionality which is able to support this operation ? Thank you in advance, Leandros
                                                                                                            • IMAP as a source option in Dashboards

                                                                                                              Hi Team Can I request IMAP be added as a source option for running a report or creating a KPI in dashboards. I have selected all options and my IMAP linked emails are not showing, I can only check these by going to emails in a contact. Thankyou Josh
                                                                                                            • Device Credentials

                                                                                                              Connection Credentials for my device. Where is this displayed in the application.
                                                                                                            • Custom Function : Copy multilookup field to text field

                                                                                                              Hi, I'm a newbie on function programming, I try to copy text from a multi lookup field named "societe" to a text field named "societe2". I've used this code. In deluge script it seems to work, but when I trigger this function it doesn't work (Societe2 is still empty) Argument : Name : societe / string Name : societe2 / string Code : resp = zoho.crm._updateRecord("Societe",Societe.toString(),{"Societe2":Societe});  Can anyone help me ? Thanks a lot,
                                                                                                            • is there a better way to routinely export my project timesheets?

                                                                                                              Hi there, I am somewhat happy with how Zoho books handles time.  One thing that is missing is more user driven control over my data.  I have a workflow where I constantly need to give customers feeds of work done.  So I pick a project, and would ideally
                                                                                                            • Zoho Flow - Create CRM Meeting - Expected input type is jsonobject

                                                                                                              I'm trying to use the Create Module Entry action in Zoho Flow to create a meeting in Zoho CRM. The participant field is throwing an error during debugging: "Zoho CRM says "Invalid input for invalid data. The expected input type is jsonobject." I've tried
                                                                                                            • Zoho desk not sending call reference to user

                                                                                                              Hi, I am using zohone desk and have setup the call logging email address but sadly users are not getting a call reference notifying them that the call has been logged also can't see the updated call when it is going through faces. My question is, is there
                                                                                                            • Zoho CRM and Books Integration

                                                                                                              Evening, I have started the integration with FSM from CRM and having difficulties with the mapping. In CRM we use "Unit Price" as our cost price and mark this up on a subform to create a "Sell Price" this markup can be different on each quote depending
                                                                                                            • Can you please let us know how we can use Zoho for multi store?

                                                                                                              Hello Team, Can you please let us know how we can use Zoho for multi store because when we connect our plugin to Zoho and we create a product and then on another store when we create product with same name then product already exist error occurs, so how
                                                                                                            • Learning how to customize templates via code and best practices

                                                                                                              Hi! Our developers team want to learn how to edit our template files safely. The last time we messed with these files our site went down for a day and we had to reconfigure it from scratch. What are the best practices to do this? How can we get a template
                                                                                                            • How to Add Custom Sections in the Product Page?

                                                                                                              Hi Zoho team, I’m currently using the Tranquil theme on Zoho Commerce and I have a question regarding the product page layout. Right now, under each product, I can see expandable sections like Product Details and Specifications. I’d like to add two additional
                                                                                                            • Can you limit SEO penalties by delaying the appearance of a pop-up?

                                                                                                              Google is not keen on pop-ups and has got even less keen on them with the new Core Web Vitals updates. But I like using pop-ups. If you delay the pop-up so it only appears 10 seconds after the page loads, do you avoid Google’s penalties? 
                                                                                                            • Assistance Required for Fetching Custom Subform Data in Zoho CRM Widget

                                                                                                              Hi Team, I am facing an issue with my Zoho CRM Widget. In the Quotes module, there are two Subforms — one is a predefined Subform, and the other is a custom Subform that we have created. In the Inspect console of my widget, I am only able to see the predefined
                                                                                                            • Zoho Mail Shared Mailbox migration

                                                                                                              Hello! I am in the process of migrating our whole email infrastructure to Zoho Mail. We currently use cPanel for our email accounts and we want to migrate them to Zoho Mail using the migration tool. The problem is that we use an email for our sales department
                                                                                                            • Have an input card for zobot that could collect Name, Email, and Phone or a message all at once

                                                                                                              It would be great to have an input card for the codeless bot in a form style that allows it to ask all relevant questions at once. at any point in the chat flow or conversation, This approach would simplify the interaction, making it easier and more straightforward
                                                                                                            • Change DKIM From 20248 Bit Key to 1024 Bit Key

                                                                                                              I am having issues trying to change the Bit Key in DKIM from 2048 to 1024 so that it works with my Shopify Account. I can only find information on how to configure this when the Domain Key is added, but I couldn't find any details on how to change it
                                                                                                            • Introducing ICR in Zoho CRM: Transform your printed text into digital data

                                                                                                              From writing on papyrus in the ancient times to creating a humble record in your CRM, the world may have evolved with how it used to record data, but data entry as such has not been simplified. It is still a repetitive and arduous chore on which businesses
                                                                                                            • Can you change the width of a template, and/or the size of images we upload to the template?

                                                                                                              my images look good in preview, but are then skewed when sending email. Also, are image sizes "fixed" by which template is being used? Thanks in advance. CV
                                                                                                            • Update Date field using a custom function

                                                                                                              Hello, In Zoho FSM, Equipments module, I created the following custome fields for tracking the calibration of the eqipments: "Calibration Required"; type: Checkbox; API Name: "Calibration_Required__C" "Calibration Interval (Days)"; type: Number; API Name:
                                                                                                            • Zoho CRM API, Python SDK v7 Quoted_Items

                                                                                                              Hello. How do I use this SDK to retrieve the Quoted_Items from a Quote and downstream the items in a Sales Order I can see references to a constant INVENTORY_MODULES_ITEMS = ["invoiced_items", "quoted_items", "purchase_items", "ordered_items"] But I cannot
                                                                                                            • Zohoのシステムについて

                                                                                                              ここで提供しているofficeソフトが使いたくて質問するためにユーザー登録をしました。企業を対象として事業展開されているようですがzohoのシステムがよくわかりません。writerやsheetなどのソフトを利用してもかまいませんか?また利用するときの費用はどうなっているのかとか組み込まれているbasicについての資料とか、要望事項を記してくださいと書かれてあったりとか質問したいことがたくさんありますがこうした質問が許されているのかもわかりません」 ここの書き方もよくわかりません
                                                                                                            • Email de outra pessoa ja associada ao meu dominio

                                                                                                              Tenho um dominio e está falando que o email da pessoa ja está associada ao meu dominio
                                                                                                            • Pin multiple columns and adjust column widths in CRM subforms

                                                                                                              Hello all, Subforms act as secondary forms or tables in which you can associate multiple line items to a primary record and thereby ensure more structured and comprehensive data organization. We've made some recent enhancements to subforms. Here's what's
                                                                                                            • MULTI-SELECT LOOKUP - MAIL TEMPLATE

                                                                                                              Dear all how are you? We need to insert data from MULTI-SELECT LOOKUP in a email template, but I can't do that, when I'm creating the template I can't find the field to insert it. is there any solution? PVU
                                                                                                            • On create of Amc module get sub form data of last row and update in Schedule Vist End Date field in zoho crm

                                                                                                              @Iswarya B G @Bhoomi Joshi @Abinaya Praveen @Ishwarya SG @Haiku Technical Support On create of Amc module get sub form data of last row and update in normal module field Schedule Vist End Date field in zoho crm
                                                                                                            • Announcing Early Access to "Zoho CRM for Everyone" — A new and exciting update to Zoho CRM

                                                                                                              We are delighted to announce an Early Access to Zoho CRM for Everyone— a truly democratic approach to managing a CRM, gift-wrapped in an exciting and intuitive user interface. Here, multiple teams across an organization can coordinate among each other
                                                                                                            • How do I create a time field?

                                                                                                              I want a field that only records time. I can only see how to create a date-time field. If I do that and enter a time, without a date, nothing is recorded. If I create a number or decimal field, I cannot use it in time calculations. All I want is a field
                                                                                                            • Magento 2 as data source for Analytics

                                                                                                              I see that Shopify is in Beta as a data source, any change that Magento 2 is in the works? We currently use Metrilo to parse our eCommerce data for marketing and would love to keep that inside our Zoho ecosystem. Thank you!
                                                                                                            • Zoho Finance Issue in Deals (ZOHO CRM)

                                                                                                              I create almost all estimates/Invoi in Zoho Finance when I convert a lead into a deal or a contact into a deal. But in the Deals section, when I click on any person’s deal, I don’t see the estimations or invoicing from Zoho Finance at the end. May I know
                                                                                                            • Restrict card movement in Kanban View

                                                                                                              Hello everyone, I’m wondering if there’s a way to prevent users from moving Deal cards in the Kanban view when grouped by Stage. On the Deal details page, I’ve implemented several validations to ensure users cannot change stages until all conditions,
                                                                                                            • Everything you want to share — in ONE link

                                                                                                              Hey everyone, Say hello to our very own link in bio tool – Linkthread is designed to create a single customizable link that contains everything you want to share with your audience on social media. Welcome to the Linkthread Community! What's Linkthread?
                                                                                                            • What is the difference between a template and a snippiet

                                                                                                              Hi there, I am currently working on optimising our service desk and improving the consistency of our responses. I have come across two tools that appear to help do this, templates and snippets. I was wondering what the similarities and differences are
                                                                                                            • Is there a way to set up templates for commonly occurring issues on Zoho Desk

                                                                                                              Hi there, We have recently migrated our service desk over to Zoho. I was wondering if there is a way we can set up custom templates for specific requests that we commonly get from our customers. Example: Customer often requests a password reset. There
                                                                                                            • Can I add Conditional merge tags on my Templates?

                                                                                                              Hi I was wondering if I can use Conditional Mail Merge tags inside my Email templates/Quotes etc within the CRM? In spanish and in our business we use gender and academic degree salutations , ie: Dr., Dra., Sr., Srta., so the beginning of an email / letter
                                                                                                            • Dynamic user applications for CPQ?

                                                                                                              Hi, I've been enjoying getting to know CPQ, the Product Configurator and Price Rules components have been very useful, albeit with some issues. I have noticed that I don't have the power to decide which level of sales staff has permissions when it comes
                                                                                                            • Automate Zoho Meeting Creation via Blueprint (Leads & Accounts)

                                                                                                              I need help automating Zoho Meeting creation during a blueprint transition in both the Leads and Accounts modules. Requirements: Triggered via blueprint Read meeting start time (DateTime field) and internal participants from CRM Create Zoho Meeting via
                                                                                                            • Next Page