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 >>                                                                                       

      Zoho Campaigns Resources


        • Desk Community Learning Series


        • Digest


        • Functions


        • Meetups


        • Kbase


        • Resources


        • Glossary


        • Desk Marketplace


        • MVP Corner


        • Word of the Day


        • Ask the Experts


          Zoho CRM Plus Resources

            Zoho Books Resources


              Zoho Subscriptions Resources

                Zoho Projects Resources


                  Zoho Sprints Resources


                    Zoho Orchestly Resources


                      Zoho Creator Resources


                        Zoho WorkDrive Resources



                          Zoho CRM Resources

                          • CRM Community Learning Series

                            CRM Community Learning Series


                          • Tips

                            Tips

                          • Functions

                            Functions

                          • Meetups

                            Meetups

                          • Kbase

                            Kbase

                          • Resources

                            Resources

                          • Digest

                            Digest

                          • CRM Marketplace

                            CRM Marketplace

                          • MVP Corner

                            MVP Corner




                            Zoho Writer Writer

                            Get Started. Write Away!

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

                              Zoho CRM コンテンツ




                                ご検討中の方

                                  • Recent Topics

                                  • Workdrive on Android - Gallery Photo Backups

                                    Hello, Is there any way of backing up the photos on my android phone directly to a specific folder on Workdrive? Assuming i have the workdrive app installed on the phone in question. Emma
                                  • Auto sync Photo storage

                                    Hello I am new to Zoho Workdrive and was wondering if the is a way of automatically syncing photos on my Android phone to my workdrive as want to move away from Google? Thanks
                                  • Is anyone experience missing functions in the new UI until hard refresh?

                                    The set of functions including search is almost always missing upon loading an app in the new UI. If you refresh, the functions return. (see second screenshot) Anyone else experiencing this?
                                  • Conversion Rate – Won Deals over Assigned Prospects

                                    Hello, I would like assistance configuring a KPI in Zoho Analytics titled: Objective of the calculation: Number of Won Deals divided by Total number of assigned prospects (not only converted prospects). Important clarification: The denominator must include
                                  • Not receiving New Ticket Emails

                                    Hello! The company I work for uses the Zoho ticketing system, however, I've noticed I'm not receiving email notifications when new tickets are published. I have admin rights to see these tickets on Zoho Desk and respond to them, but am not receiving the
                                  • Can't update a field on a parent form from a child form's On Success workflow

                                    Title: Can't update a field on a parent form from a child form's On Success workflow Hi everyone, I'm building a simple Golf Lesson Tracker app and I'm stuck on what should be a basic operation — updating a number field on a parent form when a child form
                                  • Approvals in Zoho Creator

                                    Hi, This is Surya, in one of  my creator application I have a form called job posting, and I created an approval process for that form. When a user submits that form the record directly adding to that form's report, even it is in the review for approval.
                                  • Upload from Zoho Creator File Upload field to OpenAI Vector Store

                                    I’ve struggled for quite a while to get this working properly. For a long time we relied on Azure Functions as a workaround to handle file transfers between Zoho Creator and OpenAI Vector Stores. It worked, but added unnecessary infrastructure and complexity.
                                  • Allow Admin to Configure Report > More Options Button

                                    As an Admin, I want to configure the options of the Report > More Options button to improve UX and reduce Developer overhead. See attached screenshot. Original question posted here: https://help.zoho.com/portal/en/community/topic/modify-standard-rep
                                  • Calendar start time limit

                                    Hi all, Has anyone found a magical way to filter calendar reports to start from, let's say 8:00, and not 0:00? Or at least to auto scroll there like Google Calendar for example?
                                  • Enable Free External Collaboration on Notecards in Zoho Notebook

                                    Hi Zoho Notebook Team, I would like to suggest a feature enhancement regarding external collaboration in Zoho Notebook. Currently, we can share notes with external users, and they are able to view the content without any issue. However, when these external
                                  • EU Problem

                                    Hi all, we've been facing issues with the Europe data center for two days. It's starting to disrupt our daily workflow. Any word on when this will be resolved?
                                  • How can I clone my website in order to try new templates?

                                    I want to try a new template for my existing Zoho website without the risk of changing the current site or accidentally publishing the wrong template. Therefore I thought a 'clone website'-option should be somewhere, but I can't find it. How do I try
                                  • Is it possible to update multiple work items at once?

                                    Hi, Is it possible to update the statuses/release tags of multiple work items at once? I came across this thread that says it's not possible at the moment, but it was related to the Sprints mobile app. Does this feature not exist in the website as well?
                                  • Custom Module Missing from Roles & Permissions List

                                    Hi Zoho Community, I created a new Custom Module in Zoho Expense. The module is fully built and I can see it in the Module Builder (Settings > Customization > Modules). However, I am unable to deploy this to my users because the module does not appear
                                  • Pivot Report Formula - using a today() variable

                                    Is it possible for me to use a value of today() in a formula on a pivot table? I'm trying to identify where the end date of a project is greater than the current date if("10. Projects (Zoho Projects).End Date" > today(), 'Yes', 'No') I get the error that
                                  • Custom view inconsistencies

                                    Why is "is not" missing from criteria, along with other comparison operators ??? It makes it almost impossible to build required custom views, I don't want "void" invoices listed & why on earth would "Void" invoices be showing when the criteria includes
                                  • Need Customer Item Inward Module along with QC

                                    Need Customer Item Inward Module along with QC 1. Using Transfer Orders hit the item balance sheet 2. Items without inventory it becomes difficult for tracking purpose. 3. Custom Modules become tedious to capture multiple items, item subforms are not
                                  • Zoho CRM Quotes – Subform and PDF/Writer Limitations

                                    Hello, I am encountering the following limitations in Zoho CRM Quotes: Custom product images cannot be uploaded in the subform – the image upload field cannot be added; only the file upload field is available. File upload placeholders cannot be used in
                                  • Apple Messages for Business in Omnichannel communications?

                                    Hello, Apple launched "Apple Messages for Business" but Zoho CRM or Zoho Desk don't appear in the list of possible integrators. Zoho already promotes https://www.zoho.com/crm/omnichannel.html Omni Channel integration, but Apple Messages does not yet appear.
                                  • Possible to Turn Off Automatic Notifications for Approvals?

                                    Hello, This is another question regarding the approval process. First a bit of background: Each of our accounts is assigned a rank based on potential sales. In Zoho, the account rank field is a drop-down with the 5 rank levels and is located on the account
                                  • Will be possible to create a merge mail template for products?

                                    Hi, we would need to create a mail merge template for products (native) module. Will be possibile? or do you have a smart solutions to merge products data with a mail merge? thanks Chris
                                  • Maximum incoming email (attachment size) limit

                                    I see that the maximum size of received emails can now be set to 20MB, however I'd still like to see it be larger. It's embarrassing when a client sends me an email with a large attachment and I can't receive it. 50, even 100 MB seems reasonable these
                                  • [Free Webinar] Learning Table Series - Multi-currency management in Zoho Creator

                                    Hello everyone, We’re excited to invite you to another edition of the Learning Table Series webinar. As you may already know, we've moved to a purpose-based approach in the Learning Table Series this year. Each session now focuses on how a Zoho Creator
                                  • Outlook/Hotmail Blocking Zoho SMTP IPs (S3150)

                                    We are currently facing a serious deliverability issue with Zoho SMTP while sending transactional OTP emails for our production application. Emails sent to Outlook / Hotmail addresses are being rejected with the following error: 550 - 5.7.1 Unfortunately,
                                  • Outlook is blocking incoming mail

                                    Outlook is blocking all emails sent from the Zoho server. ERROR CODE :550 - 5.7.1 Unfortunately, messages from [136.143.169.51] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). It looks
                                  • LESS_THAN_MIN_OCCURANCE - code 2945

                                    Hi I'm trying to post a customer record to creator API and getting this error message. So cryptic. Can someone please help? Thanks Varun
                                  • Ranking by group in report

                                    Dears, I am new to Zoho Analytics and I would like to ask you guys help to creating a ranking column. Report type: Pivot Matter: I want to create a ranking column on the right of Percentage. This ranking is group by column Type, and ranking by Final Score/Percent.
                                  • How do I add a project template to a pre-existing project?

                                    Help....How do I add a project template to a pre-existing project? Right now I have to delete the old project, make a new one and add the project template at the time of creating the new project.
                                  • How to add line breaks in zoho.cliq.postToUser(...) message?

                                    In a CRM function using Deluge I'm sending this message and attempting to add some line breaks but they are ignored. Is there another way to add these breaks? My message: message: New urgent task\nDescription \nThis is a fake description.\n A new line?
                                  • Passing the image/file uploaded in form to openai api

                                    I'm trying to use the OpenAI's new vision feature where we can send image through Api. What I want is the user to upload an image in the form and send this image to OpenAI. But I can't access this image properly in deluge script. There are also some constraints
                                  • Users may not pick the fields to be shown as columns in the Choose Account window when creating a new Deal record

                                    Hi there, by talking with other users I found out that I, as an Admin, am the only one who can pick fields to be shown as columns in the Choose Account window when creating a new Deal record. In fact, if other users click on the "Add Column" symbol on
                                  • {Action Required} Re-authenticate your Google Accounts to Continue Data Sync

                                    Hello Users! To align with Google’s latest updates on how apps access files in Google Drive, we’ve enhanced our integration to comply with the updated security and privacy standards, ensuring safer and more reliable access to your data. With this update,
                                  • Why is the ability Customize Calls module so limited?

                                    Why can't I add additional sections? why can't I add other field types than the very limited subset that zoho allows? Why can I only add fields to the outbound/inbound call sections and not to the Call Information section?
                                  • Report Template - How to remove page break after each record?

                                    Hi, We have report template for a list report. It looks good at screen. But when printing, it creates a page break after each record. How to remove the it? So we can print multiple records in same page. Please look at the attached screenshots. Report Template Report Print Preview
                                  • Calendar report with order options and more quick view templates

                                    I think many of us regularly work with calendar-style reports. It would be great to be able to customize the quick view with new templates and have options to sort the entries for each day of the calendar by different criteria. I think this is an interesting
                                  • Sender Email Configuration Error.

                                    Hello Team, Hope you are all doing well. We are in the process of creating the Zoho FSM environment in the UAE. When we try to add the sender email address “techsupportuae@stryker.com”, we receive the error message: “Error occurred while sending mail
                                  • Shall we play a game?

                                    Presenting the very first game created using ZOHO Creator: Tic-Tac-Toe (or noughts and crosses) I made this to challenge myself and employ some of the new features of ZOHO Creator. I must admit that the code is very literal and not too elegant. There are plans to improve on the machine AI and streamline the code over time. Currently the code makes extensive use of functions for the machine "AI" - there are 12 of these.   The machine AI can be tricked, so to counteract that I made it exceedingly arrogant
                                  • Career site URL - Suggestion to modify URL of non-english job posting

                                    Hi, I would like to suggest making a few modification to career sites that are not in english. Currently, the URL are a mix of different languages and are very long. It makes for very unprofessional looking URLs... Here is an example of one of our URL
                                  • CRM notes

                                    I want to be able to add notes to a task that do not necessarily get rolled up into an account or contact.   For example, I tasks to work on a Court Order for John Doe divorce account.  There might be lots of updates (in the form of notes) that employees
                                  • Next Page