Power of Automation :: Streamline notification on Zoho Cliq channel on project creation.
Hello Everyone,
A Custom function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it.
One of our customers would like to get notified in the Cliq channel once the project is created along with the project owner, creator and project prefix id details. We already have a Gallery custom function available with the name - Send message to Cliq channel. Minor changes have been implemented to incorporate the project owner's information into the Gallery code, fulfilling the customer's requirement.
Below custom function should be associated with the Project workflow rule along with the trigger condition as "on creation" so that once the project is created, notification would be triggered in the mapped Cliq channel.
Custom function code:-
projectCreateContent = "[user] has created a new project [projId] [projectName] and assigned [projectOwner] as the owner of the Project";
projectUpdateContent = "*[user]* has updated the [action] of the project [projId] from *[pre-value]* to *[post-value]*";
projectBulkUpdateContent = "*[user]* has updated project [projId]";
projectBulkUpdateSubContent = "[action] from *[pre-value]* to *[post-value]*";
projectDeleteContent = "*[user]* has deleted the project *[projectName]*";
projectsDomainURL = "https://projectsapi.zoho.com/restapi";
messageContent = "";
if(!projectAffectedFields.isNull() && projectAffectedFields.contains("edits"))
{
action = projectAffectedFields.get("action");
user = projectAffectedFields.get("user");
projectDetailResp = invokeurl
[
url :"https://projects.zoho.com/restapi/portal/" + portalId + "/projects/" + projectId + "/"
type :GET
connection:"xxxxxxxxx"
];
projectInfo = projectDetailResp.get("projects").get(0);
if(action == "Creation")
{
url = "[" + projectInfo.get("key") + "]";
projectCreateContent = projectCreateContent.replaceAll("[user]",user.get("name"),true);
projectCreateContent = projectCreateContent.replaceAll("[projId]",url,true);
projectCreateContent = projectCreateContent.replaceAll("[projectName]",projectName,true);
messageContent = projectCreateContent.replaceAll("[projectOwner]",owner,true);
}
else if(action == "Update")
{
if(projectAffectedFields.get("edits").size() == 1)
{
url = "[" + projectInfo.get("key") + "]";
projectBulkUpdateContent = projectBulkUpdateContent.replaceAll("[taskId]",url,true);
projectBulkUpdateContent = projectBulkUpdateContent.replaceAll("[user]",user.get("name"),true);
for each fields in projectAffectedFields.get('edits')
{
subcontent = projectBulkUpdateSubContent;
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[action]",fields.get("field_name"),true);
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[pre-value]",fields.get("old_value"),true);
projectBulkUpdateSubContent=projectBulkUpdateSubContent.replaceAll("[post-value]",fields.get("new_value"),true);
projectBulkUpdateContent=projectBulkUpdateContent + " " + projectBulkUpdateSubContent;
}
messageContent = projectBulkUpdateContent;
}
else
{
fields = projectAffectedFields.get("edits").get(0);
projectUpdateContent = projectUpdateContent.replaceAll("[user]",user.get("name"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[action]",fields.get("field_name"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[pre-value]",fields.get("old_value"),true);
projectUpdateContent = projectUpdateContent.replaceAll("[post-value]",fields.get("new_value"),true);
messageContent = projectUpdateContent;
}
}
else if(action == "Deletion")
{
projectDeleteContent = projectDeleteContent.replaceAll("[user]",user.get("name"),true);
messageContent = projectDeleteContent.replaceAll("[projectName]",projectName,true);
}
}
info "message:" + messageContent;
chat = zoho.cliq.postToChannel("channel name",messageContent,"yyyyyyyyy");
info chat;
return "success";
Make sure to replace xxxxxxxxx with Zoho Projects connection name and yyyyyyyyy with Zoho Cliq connection name in the above code. Also, update "channel name" with the Zoho Cliq channel name. Screenshot of the list of parameters to be mapped is attached for reference.
With the custom function code provided above, allowed our customer to efficiently utilize Project custom functions within Zoho Projects. This facilitated the monitoring of project creation in the Zoho Cliq channel, ultimately boosting their business productivity.
We hope you found this post useful. If you have any questions or wondering if your requirement could be met using custom functions, feel free to share them in the comments section below.