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

                                                                                              Get Started. Write Away!

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

                                                                                                Zoho CRM コンテンツ



                                                                                                  Nederlandse Hulpbronnen


                                                                                                      ご検討中の方




                                                                                                              • Recent Topics

                                                                                                              • editing/applying online payments

                                                                                                                We have customers who pay part or all of an invoice and then cancel their service and want the payment as a credit to future work. It would be ideal if we could make it an excess payment and then void the invoice. I can't make it an excess payment because
                                                                                                              • Contacts per department

                                                                                                                Hello, Is it possible to limit Contacts to a Department? Thanks
                                                                                                              • Good news! Calendar in Zoho CRM gets a face lift

                                                                                                                Dear Customers, We are delighted to unveil the revamped calendar UI in Zoho CRM. With a complete visual overhaul aligned with CRM for Everyone, the calendar now offers a more intuitive and flexible scheduling experience. What’s new? Distinguish activities
                                                                                                              • Is there a plan to allow for the hierarchical organization of Customers / Companies in Zoho Billing?

                                                                                                                We have a few customers who have organizational structures that we haven't quite found a way to deal with in Zoho Billing. In CRM, these sub-companies (or subsidiaries or whatever you want to call them) all have another CRM account as the parent account.
                                                                                                              • This site can’t be reached mail.zoho.com took too long to respond

                                                                                                                In my office at any system, we couldnt able to login zoho email. it shows " This site can’t be reached mail.zoho.com took too long to respond". please fix it soon.
                                                                                                              • Credit Management: #2 Configuring Right Payment Terms for Credit Control

                                                                                                                Think about the last time you ordered something online and saw that little note at the checkout, "Pay on Delivery" or "Pay later". It's simple, but it actually sets the tone. As a business owner, you know exactly when payment is expected. Now, imagine
                                                                                                              • Can send email from zoho mail, but can't receive any.

                                                                                                                Hi, My domain is sattvameditationresort.com. I've updated MX records with those of Zoho. But i can't send any mails to this email id from gmail. I have checked the MX status with MXTOOLS, its showing the correct entry either. The error is as shown below:
                                                                                                              • My domain did not activate

                                                                                                                Hi, my domain (apsaindustrial.com.ar) did not activate, and the phone verification message never arrived. Please would you solve this problem? Thanks.
                                                                                                              • Paid Support Plans with Automated Billing

                                                                                                                We (like many others, I'm sure) are designing or have paid support plans. Our design involves a given number of support hours in each plan. Here are my questions: 1) Are there any plans to add time-based plans in the Zoho Desk Support Plans feature? The
                                                                                                              • Host not found?

                                                                                                                Howdy! So i'm trying to add my custom domain for with the mail server. I have 100% control of my DNS and have tried every single option (TXT, CNAME, and even HTML) multiple times, ensuring i did it properly, to no luck. I get the same error message every
                                                                                                              • Emails are going to notification folder and not in inbox

                                                                                                                emails are going to notification folder and not into inbox
                                                                                                              • Error AS101 when adding new email alias

                                                                                                                Hi, I am trying to add apple@(mydomain).com The error AS101 is shown while I try to add the alias.
                                                                                                              • Related list Mobile Device

                                                                                                                Hello, We use an the Zoho creator application to make reports linked to Accounts. On the computer: it's easy to go the Account and see all the created reports in the related list below On iPad/Phone ZOHO CRM APP: we cannot see the reports on those accounts
                                                                                                              • Report on opportunities showing only the last note added.

                                                                                                                Hi I need to create a report that shows the most recent note added to each opportunity. This is so management can see what the latest update is according to the assigned salesperson. One workaround is to use the status field but this implies added manual work and mistakes as the salesperson would have to copy the existing status to a note before adding the latest status... otherwise the activity history would be lost. My current workaround is a report on Notes with Opportunities as the related module.
                                                                                                              • Please add Zelle as an online payment option

                                                                                                                Hello, I would like to request Zelle be added to the online payment service providers for Zoho Invoice. Considering how ubiquitous Zelle has become as a way to pay people via the major banking institutions, I feel like many freelancers would benefit from
                                                                                                              • Zoho Sheet for Desktop

                                                                                                                Does Zoho plans to develop a Desktop version of Sheet that installs on the computer like was done with Writer?
                                                                                                              • This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details

                                                                                                                Hello, Just signed up to ZOHO on a friend's recommendation. Got the TXT part (verified my domain), but whenever I try to add ANY user, I get the error: This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details I have emailed as well and writing here as well because when I searched, I saw many people faced the same issue and instead of email, they got a faster response here. My domain is: raisingreaderspk . com Hope this can be resolved.  Thank you
                                                                                                              • How to display the CONTACT ID in the Contact page

                                                                                                                Hi, I've seen this conversation below and it is exactly the same question I'm raising now, but unfortunately the last message is not solved https://help.zoho.com/portal/community/topic/show-contact-id-while-editing-contact-form I need to show the ContactId and I don't know how to do this. The last message included in the conversaton shows the way but not it is not completed. "I am sorry by default we do not have the option to show the record ID for the contacts in the field in a record. When you
                                                                                                              • CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users

                                                                                                                Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
                                                                                                              • Create Canvas list view templates from images powered by Zia

                                                                                                                Currently available for all paid editions of Zoho CRM in the US, EU, IN, JP & CN DCs. Designing a personalized CRM interface just got even easier. In today’s fast-evolving digital landscape, AI is transforming the way we work by automating complex tasks
                                                                                                              • Painfully Slow Zoho mail

                                                                                                                Since yesterday Zoho Mail seems to have starting functioning very slowly and having a few bugs. It's slow to open mails, slow to send, slow to change between email accounts. Sometimes clicking on a particular folder (eg Sent folder) stops working and
                                                                                                              • "Wrong password or login" Problem to configure Zoho on MAIL App on my Macbook

                                                                                                                Hi, I'm having problems to configure my e-mail on my MAIL App(Macbook pro). My e-mail is hari@trespontoum.net Actually was working perfectly, and still working on my Iphone. My MAIL App prompt me that my login or password is wrong. I tried to change 3
                                                                                                              • "User already exist in your org"

                                                                                                                Hello, I've just read a discussion about this issue, which didn't solve my problem. I'm trying to add the following emails: sales@kiss-my-boutique.co.uk returns@kiss-my-boutique.co.uk orders@kiss-my-boutique.co.uk I'm getting an error message each time I try and add them. None of them are primary or secondary emails and none of them have been created as users before. I know this as when I try and login and do 'forgot my password' all I get is an error message saying 'user invalid'. Please advise.
                                                                                                              • Operation Not Permitted

                                                                                                                Hi, I have problem in adding user after verifying the domain but it seems like error appeared which is "operation not permitted". For your information, I had delete other domain before did it.
                                                                                                              • Email forwarding setup fails

                                                                                                                I'm trying to set up email forwarding from my Zoho email to my gmail address. I followed the directions to set up email forwarding here: https://www.zoho.com/mail/help/email-forwarding.html. I did only steps 1-6. After doing this, rather than setting
                                                                                                              • Passing the CRM

                                                                                                                Hi, I am hoping someone can help. I have a zoho form that has a CRM lookup field. I was hoping to send this to my publicly to clients via a text message and the form then attaches the signed form back to the custom module. This work absolutely fine when
                                                                                                              • Shopify store email issues- Not getting emails

                                                                                                                Hi We have migrated from Microsoft outlook to Zoho back in March, we have a shopify store, the domain is hosted on namesilo, not shopify, I have seen some people here complaining about not getting emails from customers who fill out the contact form on
                                                                                                              • How do I fix this? Unable to send message; Reason:554 5.1.8 Email Outgoing Blocked.

                                                                                                                How do I fix this? Unable to send message; Reason:554 5.1.8 Email Outgoing Blocked.
                                                                                                              • Invoice Discount Account

                                                                                                                Is there a way to change the account used for Discounts applied to an invoice? The current Discount account (ZB native account) type is an "Income" type. I would like to change it to "Other Income", but that is not possible, I am assuming because it contains
                                                                                                              • Need Inactive accounts to be visible in Reports in Zoho Books

                                                                                                                I N=need Inactive accounts to be visible in Reports in Zoho Books to do recons of the accounts but when i see the same they are not visible in the Accountant - Account Transactions report
                                                                                                              • API Support for Creating Invoices with Batch-Tracked Items

                                                                                                                Hi Zoho Community, I am working on an integration where we create invoices in ERPNext and push them to Zoho Books. I need to send batch-tracked items (batch numbers) when creating invoices. I could not find any reference in the Zoho Books API documentation.
                                                                                                              • javax.mail.authenticationfailedexception 535 authentication failed

                                                                                                                Hi, I am facing 535 authentication failed error when trying to send email from zoho desktop as well as in webmail. Can you suggest to fix this issue,. Regards, Rekha
                                                                                                              • Phantom Opening Balance

                                                                                                                While experimenting w/ creating a composite item, Zoho added funds to Petty Cash and added Bank Account equal to previous day's balance. I'm unable to undo the adding of funds. Attaching screenshots of both bank account and petty cash transactions.
                                                                                                              • Importing customer comments and multiple shipto addresses

                                                                                                                I am evaluating Zoho Books and have most of my data imported with two exceptions: (1) Import customer comments - in my current system I have several comments of different types, and I need to bring these into Zoho. Preferably Books customer records, but
                                                                                                              • Detailed Account Reports - Add Running Balance

                                                                                                                When one clicks into an account from a report (say P/L or Balance Sheet), the default reports have the Debit, Credit, and then the Amount. The Amount column (last one) is duplicate information. It would be far better and fit more peoples' use cases if
                                                                                                              • How to Billed from two different GST Numbers

                                                                                                                How to Billed from two different GST Numbers. Suppose ABC & Co had GST registration in Delhi and Haryana and Zoho account is created with Delhi GST Registration number. Now i also want to issue invoice from Haryana GST Registration number. How can i proceed ?
                                                                                                              • Payment system for donations management

                                                                                                                I manage an organization where we receive donations from payers. Hence, there is no need to first create invoices and then create payments received against the invoices. What are the recommended best practices to do this in ZohoBooks?
                                                                                                              • How do I associate pricebooks to a customer?

                                                                                                                I setup a few pricebooks, that worked fine. But now the only thing I can do with it, when I enter a quote or sales order, I can select which pricebook to use, but I have to do this product by product every time I add one. Is there a way to connect a pricebook
                                                                                                              • Zoho IP blocked by SpamHaus

                                                                                                                ERROR CODE :550 - 5.7.0 Your server IP address is in the SpamHaus SBL-XBL database, bye
                                                                                                              • IMAP Communication Problems - IMAP Down Again

                                                                                                                We are experiencing the same problems over the last week or so that were supposedly 'solved' according to this thread. Zoho Imap Down Again This is affecting attempts to use IMAP on multiple ISPs and users so is definitely narrowed down to Zoho problems.
                                                                                                              • Next Page