Hi Everyone!
Verifying customer information is critical in business to filter out junk data and spammers. Whether it’s lead generation, appointment booking, or any other operation, ensuring quality data is essential for driving meaningful outcomes. A verified mobile number stands out as a dependable source of high-quality data. When automating processes with chatbots, you can enhance data quality by adding mobile number verification through OTP (One-Time Password)
We’ve developed a
plug script that verifies customer mobile numbers using OTP (One-Time Password) integrated with
Twilio. You can add this to your
Codeless bot builder to make your bot smarter, your processes smoother, and your data more reliable.
Overview of verifying the mobile number with OTP:
We need two Plugs:
- Plug 1 - Generate & send OTP to the mobile number:
- Plug 2 - Verify the OTP
Plug 1- Generate & send OTP to the mobile number:
- Open SalesIQ, navigate to Settings > Developers > Plugs > Add.
- Give a name, description for the plug. Select the Platform as Scripts, and click on Create Plug.
- The first step in building the plug is defining the parameters. Click on the parameters on top and declare the following.
Input Parameter
- Name : phone | Type : Phone
Output Parameter
- Name : status | Type : String
- Name : otp | Type : Number
Copy the code below and paste it into your plug builder. Then, make the following changes
- In line #8, replace your account_sid (Navigate to the Twilio > Select your account > Account info > copy the Account SID)
- In line #12, the auth token (Navigate to the Twilio > Select your account > Account info > copy the Live/Test credential)
- In line #19, replace your Twilio phone number.
- response = Map();
- phone = session.get("phone").get("value").remove(" ");
- //Generate OTP
- otp = randomNumber(1000,9999);
- //Message body
- body = "Your OTP for Zylker is " + otp;
- //Navigate to your Twilio profile > Account > API Keys & Tokens > copy the Account SID
- account_sid = "ACa988e5ee589d4c827439d1";
- url = "https://api.twilio.com/2010-04-01/Accounts/" + account_sid + "/Messages.json";
- //To get auth token, Navigate to your Twilio profile > Account > API Keys & Tokens > copy the Account SID and Auth token.
- //auth = "<Account SID>:<Auth token>"
- auth = account_sid + ":e67e8be6805u8jc717cbd6a6a0";
- auth_encoded = zoho.encryption.base64Encode(auth);
- headers = Map();
- headers.put("Authorization","Basic " + auth_encoded);
- params = Map();
- params.put("To",phone);
- //Replace your Twilio number
- params.put("From","+14173879299");
- params.put("Body",body);
- response = postUrl(url,params,headers);
- status = response.get("status");
- if(status == "delivery_unknown" || status == "undelivered" || status == "failed")
- {
- sms = "failed";
- }
- else
- {
- sms = "success";
- }
- info response;
- response.put("status",sms);
- response.put("otp",otp);
- return response;
Then, click Save, preview the plug, and Publish it.
Plug 2 - Verify the OTP
- Open SalesIQ, navigate to Settings > Developers > Plugs > Add.
- Give a name, description for the plug. Select the Platform as Scripts, and click on Create Plug.
- Click on parameters and declear the following.
Input Parameter
- Name : systemotp | Type : Number
- Name : visitorotp | Type : Number
Output Parameter
- Name : otpstatus | Type : String
Copy the code below and paste it into your plug builder
- response = Map();
- systemotp = session.get("systemotp").get("value");
- visitorotp = session.get("visitorotp").get("value");
- if(systemotp == visitorotp)
- {
- otp_status = "OTP verification successful";
- }
- response = Map();
- response.put("otpstatus",otp_status);
- return response;
Then, click Save, preview the plug and Publish it.
Note : Only published Plugs will be listed in Codeless Bot Builder.
How to add Plugs to the Codeless bot builder?
Collect the Visitor's Phone Number
- Use the Phone Card to get the visitor's phone number.
Generate and Send OTP
- Configure Plug 1 to generate and send a unique OTP to the visitor:
- Under Action Cards, select the Plugs Card and choose Plug 1.
- Choose Phone as the input (context variable).
- Get the OTP and its status as outputs, saving them in the bot context as system_otp and otp_status, respectively.
- Click Save to store the configuration.
Check OTP Delivery Status
- Add a Criteria Router Card to verify if the OTP was successfully sent:
- In the Plug Success Flow, add a Criteria Router Card.
- Create a rule: For a flow OTP sending failed flow by setting the context variable otp_status returning "failed" (OTP failed).
- The Not Matched Flow represents successful OTP delivery to the visitor.
Handle OTP Input from Visitor
- In the Not Matched Flow of the Criteria Router:
- Use a Visitor Fields Card to collect the OTP entered by the visitor.
- Save the visitor's input in a context variable (visitor_otp).
Verify OTP
- Use Plug 2 to compare the generated OTP (system_otp) and the visitor-provided OTP (visitor_otp):
- Provide both OTPs as inputs to Plug 2.
- Assign a variable to save the verification result.
Next Steps Based on OTP Verification
- If OTP verification succeeds: Proceed with the next flow.
- If OTP verification fails: Prompt the visitor to re-enter the OTP and repeat the verification process using the button card.
I hope this was helpful. Please feel free to comment if you have any questions. I'll be happy to help you.
Best regards
Sasidar | Zoho SalesIQ
Recent Topics
ticketsCountByFieldValues
Hi Zoho Team, Just to check how can I include customfields to the url string. currently I'm using this. url :"https://desk.zoho.com/api/v1/ticketsCountByFieldValues?accountId=xxxxxxxxxxx&departmentId=xxxxxxxxxxxxxx&field=statusType,status" If I add customFields
Mrs
I have paid for a year subscription. I cannot set up my account I need help
Rich-text fields in Zoho CRM
Hello everyone, We're thrilled to announce an important enhancement that will significantly enhance the readability and formatting capabilities of your information: rich text options for multi-line fields. With this update, you can now enjoy a more versatile
Clone a Module??
I am giong to repurpose the Vendors module but would like to have a separate but very similar module for another group of contacts called Buyers. I have already repurposed Contacts to Sellers. Is it possible to clone (make a duplicate) module of Vendors
Webhook from Zobot to Zoho Flow fails
I'm trying to connect from zobot to zoho flow. When testing in zflow, I am receiving all entered data from the connector correctly. The SalesIQ connector's "outputreaction" is {} (is this normal or is there a problem?). But as soon as I try my chat bot
New Asap Widget How to update my code
I know you're still working on updating the documentation for calling the Asap Widget, the existing documentation is no longer valid. In the old 1.0 version I was able to do many things programmatically in javascript. I could open an article directly
Unified WhatsApp Number Management in Zoho Desk and SalesIQ
Dear Zoho Desk Support Team, We are currently utilizing both Zoho Desk and Zoho SalesIQ for our customer support operations. While both platforms offer WhatsApp integration, we are facing challenges due to the requirement of separate WhatsApp numbers
Ability to re-order Workflow Rules
We really need the ability to re-order workflow rules within departments. Either the ability to drag/drop them into a different order or something.
Is it possible to lock editing subform rows?
Ideally editing would only be locked after the form has been updated but I still want them to be able to add new subform records at any time and they should be able to delete rows from the subform. It is a named subform if that's relevant however the
Customer Parent Account or Sub-Customer Account
Some of clients as they have 50 to 300 branches, they required separate account statement with outlet name and number; which means we have to open new account for each branch individually. However, the main issue is that, when they make a payment, they
Zoho CRM <> Zoho Desk Account Sync
I have had custom fields in Zoho CRM for a time and would like that data to sync to Zoho Desk. However, since the accounts are all synced to Zoho Desk already, the newly mapped fields are not updating in Zoho Desk. Is there a way to force the sync to
Repeating Sections in Writer
I am wondering if it's possible to create repeating sections or text boxes of a document based on a merged subform fields coming from Zoho Forms. We are currently using excel to dynamically create a legal PDF document based on input fields in another
Adding fields to campaign members
Is it possible to add fields to campaign members? I want to be able to insert a date that certain actions happened as we progress a client, but can't see where or how I might be able to do that
Email Body as Ticket Description
Many of my customers use the support email instead of the portal to enter tickets. When this happens, the "Description" field is left blank. The email subject is automatically entered as the ticket subject when tickets are created this way - I would like
Can I export to PDF in Zoho Learn
I have seen help pages where export to pdf options are available but I do not see that option available from the application. I see that exprt is available in my free trial version but that is only to html pages. I need to be able to export my manuals
Ticket/email attachment automation
Is it possible for a ticket to grab any attachments included in the email chain(s) and add them as ticket attachments? Or at least is there a better work-around than saving attachments to a workstation and then uploading them to the ticket? What is the best workflow others have found to include files sent to and from clients in tickets?
Add rows in subform with Excel / Sheet datas
Hi! I'm trying to build an application where I can choose an Excel / Sheet file from a Workdrive folder, and for each data in the file, I create a row of a subform. But I can't do it, here is the code I have: inputString = input.choose_xls_file; separatorIndex
How do you print a refund check to customer?
Maybe this is a dumb question, but how does anyone print a refund check to a customer? We cant find anywhere to either just print a check and pick a customer, or where to do so from a credit note.
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
custom candidate status
how can I customize the candidate statuses (referenced to job opening). The default list can not be edited.
How to... Automatically update a field in "Contacts" that i change or add in "Accounts"
Hi There HELP ;_) I have a field in ACCOUNTS called REPS that has drop down options (Global Drop down List) I want to Update a field in CONTACT called REPS (Global Drop down List) automatically for all contacts associated to the Company in Accounts I
Is there a way to select all notes in a notebook at once?
I am trying to move notes into other notebooks but I can only select individually at the moment ( holding control allows adding to selection but it's tedious when there are a lot of notes and if I mis-click I have to start again.
Notebook freezes mobile
Hi I'm very happy to have found an alternative to Evernote! But when using Notebook on my Android mobile, it freezes. Typing gets very slow. I need to exit the app, and when I do so, my screen becomes black and need some time to give access to the phone
Setting Duration for Tasks
Can any one have any idea how can we set start date and end date for tasks by excluding saturday and sunday.
Zoho Learn Add members to a course API issues
Hello, Been having an issue with the add members to a course API for quite some time now. uids = list(); uids.add(ZUID); paramMap = {"userIds":{"" + uids + ""}}; addmember = invokeurl [ url :"https://learn.zoho.eu/learn/api/v1/portal/" + portal + "/course/"
Recurring Events Not Appearing in "My Events" and therefore not syncing with Google Apps
We use the Google Sync functionality for our events, and it appears to have been working fine except: I've created a set of recurring events that I noticed were missing from my Google Apps calendar. Upon further research, it appears this is occurring
Version Update in Writer Desktop Apps?
Are there plans to add the ability to check for updates within the Writer desktop apps? There seems to be no simple way of knowing if newer version are available for download.
Using Direct Assignment Automation for Keywords in Tickets
Hello, I'm trying to use the Direct Assignment automation to move a ticket from one department to a different one based on a keyword found in the tickets subject OR description. SAMPLE: Ticket Create (Checked) Ticket coming to - Dept A Criteria - Subject contains keyword OR Description contains keyword Move Ticket to - Dept B Assign Ticket To - Unassigned I saved and tested this by sending emails to Dept A using the keywords, but it keeps sending it straight to Dept A. Am I doing something wrong
Created delayed alerts
We have a custom alert & rule that notifies our service alerts email address when new tickets are created but these alerts are sent out immediately when a ticket is created, is there a way to set the alerts to be sent out 15 minutes after the ticket is
Get Workflow Metadata via API
Is there a way to get metadata on workflows and/or custom functions via API? I would like to automatically pull this information. I couldn't find it in the documentations, but I'm curious if there is an undocumented endpoint that could do this.
Cannot read properties of null (reading 'className')
Hello, I'm attempting to integrate the Zoho desk chat widget. It loads visually on most pages, but at some point, it throws this error and it never appears: Cannot read properties of null (reading 'className') Here is the full trace: floatbutton1_hXdnKUp…f6FPihRNT_T47_.js:1
Associate subforms and save templates as draft in Email and Inventory templates
Hello everyone, We are here with one of the most awaited updates in the Templates! Associate subform data to templates Fields from a Subform can be added to email and inventory templates in a tabular manner. Each subform will be displayed as an individual
API issue: list invoices endpoint no longer returns custom fields
Hi, could anyone please advise. It looks as though the Zoho Books API has been changed, and now does not reflect the documentation. We use the list invoices endpoint (https://www.zoho.com/invoice/api/v3/invoices/#list-invoices) to return a list of invoices,
Dashboard customization
HI, I have been working on a project feedback managment system. In that the manager dashboard should only list his projects, where as in admin dashboard it should list all the projects can we display the dashboard contents based on the logedin user ?
Add the new Home Widgets and Social channels to the signature landig page chat?
the landig page chat window does not show the new features of home widgets and social channels How can we add them to it?
Custom Page title
Hi how can we set a custom page title? like<title> in html Now it displays my username as the page title for dashboards and all other forms. It should be good if the user visits the dashboard page then the title is Dashboard.
Schedule Flow on Last Day of Month
Is there a way to schedule a flow to run on relative terms like last day of month, first Monday of month, 5th day of month, second Tuesday of month, etc?
how to send recurring estimates instead of recurring invoices
Hello, Is it possible to use the recurring invoice functionality to send recurring estimate to our customers ? We first need to send them an invoice in order to receive their purchase order and then send them the invoice with their purchase order number
Cross module filtering is now supported in CRM
Editions: All DCs: All Release plan: This enhancement is being released in phases. It is now available in AU, JP, and CN DCs. Help resource: Advanced filters The Cross-module filtering enhancement is now available to all CRM accounts in the following
Make collecting payments from your customers in Bigin easier with payment links
Greetings, Efficient payment collection is crucial for business success. Bigin already helps your businesses manage and sell products effectively, but we can further enhance this by making payment collection easier. This integrated payment feature lets
Next Page