Serverlose Funktionen – Verwendung des API-Schlüssels
Inhaltsverzeichnis
API-Schlüssel von Funktionen
Eine serverlose Funktion in Ihrem CRM kann aus jeder Drittanbieteranwendung oder innerhalb des CRM über einen Webhook aufgerufen werden. Im Allgemeinen unterstützen die meisten Webhooks jedoch OAuth2 nicht, mit Ausnahme einiger weniger. In solchen Fällen können Sie die Funktion mit der Authentifizierung per API-Schlüssel ausführen, die entweder von Ihnen oder von anderen verwendet werden kann, um die Funktion von überall aufzurufen.
Der Unterschied zwischen API-Schlüssel und OAuth2 liegt im Modus der Authentifizierung. Der API-Schlüssel muss in der Anforderungs-URL und nicht als Header authentifiziert werden.
Siehe auch:
- Funktionen in Zoho CRM.
- Integrationsaufgaben für Funktionen, die Version 2.0 der APIs verwenden.
- Deluge-Skript – Referenzhandbuch.
- Verbindungen: Verbinden Sie Ihr Zoho CRM mit Anwendungen von Drittanbietern, indem Sie deren APIs in einer Funktion aufrufen.
- Zoho Desk – Helpdesk-Software von Zoho.
Beispielfunktion:
Szenario:
Helpdesk- und Support-bezogene Software ist ein absolutes Muss in einem Unternehmen, das die Interaktion mit Kunden und Clients beinhaltet. Die Integration Ihrer Helpdesk-Software in Ihr CRM spart viel Zeit und Mühe, um alle Ihre Geschäftsinformationen von einem einzigen Ort aus zu verwalten.
Zendesk ist eine solche Software. Die von Zoho entwickelte Software Zoho Desk ist ebenfalls eine solche Software, aber der Unterschied besteht darin, dass die Integration von Zoho Desk in Zoho CRM automatisch erfolgt, während Sie Zendesk nur über Widgets integrieren müssen. Darüber hinaus müssen Sie, wenn Sie die Ticketinformationen von einem Helpdesk zum anderen übertragen müssen, große Anstrengungen unternehmen. Daher ist eine Integration von Zendesk und Zoho Desk über serverlose Funktionen in Zoho CRM sehr praktisch und nützlich.
Das Szenario, von dem wir jetzt ausgehen werden, ist ähnlich. Wann immer ein Ticket in Zendesk erstellt wird, sollte auch in Zoho Desk ein Ticket mit den gleichen Informationen erstellt werden.
Erforderliche Anwendungen:
- Zendesk
- Zoho Desk
Teil 1: Eine Verbindung herstellen
Damit die Funktion Drittanwendungen nutzen und den Datentransfer erleichtern kann, müssen Sie zunächst eine Verbindung zwischen Zoho CRM und der genannten Drittanbietersoftware herstellen. In diesem Fall wäre es Zendesk. Mehr dazu.
Erstellen einer Verbindung zu Zoho Desk:

Teil 2: Eine Funktion erstellen
Erstellen Sie eine Funktion in Zoho CRM (inklusive des Codes aus der Verbindung).
Teil 2.1: Funktion schreiben

Der Funktionscode lautet:
string createTicket(string requestBody){
if(isNull(requestBody))
{
return "Kein Inhalt";
}
if(!requestBody.contains("arguments"))
{
return "Ungültiges Format";
}
requestBody = requestBody.get("arguments");
requestBody = requestBody.get("requestBody");
requestBody = requestBody.get("details");
deskURL = "https://desk.zoho.com/api/v1/";
header = {"orgId":"664950682"};
departmentId = "264631000000006907"; //Ticket und Benutzerangaben aus requestBody holen
userDetails = requestBody.get("user");
ticketDetails = requestBody.get("ticket"); //Zuweisung erstellen
param = Map(); //Details einfügen
param.put("departmentId",departmentId);
if(!userDetails.contains("email"))
{
return "E-Mail ist obligatorisch";
}
email = userDetails.get("email");
param.put("email",email);
contactName = "Gast";
if(userDetails.contains("full_name"))
{
contactName = userDetails.get("full_name");
}
else if(userDetails.contains("first_name") && userDetails.contains("last_name"))
{
contactName = userDetails.get("first_name") + " " + userDetails.contains("last_name");
}
else if(userDetails.contains("first_name"))
{
contactName = userDetails.get("first_name");
}
else if(userDetails.contains("last_name"))
{
contactName = userDetails.get("last_name");
}
//Kontakt-ID aus dem Kontaktnamen abrufen
//Alle Kontakte abrufen
contactList = invokeurl
[
url :deskURL + "contacts"
type :GET
headers:header
connection:"zoho_desk9"
];
isExistingCustomer = false;
contactId = "";
contactList = contactList.get("data");
for each contactInfo in contactList
{
contactEmail = contactInfo.get("email");
if(!isNull(contactEmail))
{
if(email.equals(contactEmail))
{
isExistingCustomer = true;
contactId = contactInfo.get("contactId");
break;
}
}
}
info isExistingCustomer;
if(!isExistingCustomer)
{
//Einen neuen Kontakt erstellen
contactParam = Map();
contactParam.put("firstName",userDetails.get("first_name"));
contactParam.put("lastName",userDetails.get("last_name"));
contactParam.put("mobile",userDetails.get("mobile"));
contactParam.put("email",userDetails.get("email"));
contactParam.put("accountId","264631000000081178");
contactList = invokeurl
[
url :deskURL + "contacts"
type :POST
parameters:contactParam.toString()
headers:header
connection:"zoho_desk9"
];
contactId = contactList.get("id");
}
param.put("contactId",contactId);
if(!ticketDetails.contains("title"))
{
return "Titel ist obligatorisch";
}
param.put("subject",ticketDetails.get("title"));
if(!ticketDetails.contains("status"))
{
return "Status ist obligatorisch";
}
param.put("status",ticketDetails.get("status"));
if(ticketDetails.contains("priority"))
{
param.put("priority",ticketDetails.get("priority"));
}
if(userDetails.contains("organization"))
{
organization = userDetails.get("organization");
if(organization.contains("name"))
{
param.put("accountName",organization.get("name"));
}
}
if(userDetails.contains("mobile"))
{
param.put("phone",userDetails.get("mobile"));
}
if(userDetails.contains("description"))
{
param.put("description",userDetails.get("description"));
}
info param;
response = invokeurl
[
url :deskURL + "tickets"
type :POST
parameters:param.toString()
headers:header
connection:"zoho_desk9"
];
if(response.contains("errorMessage"))
{
return "Entschuldigung, es ist ein Fehler aufgetreten. error ::: " + response.get("errorMessage");
}
//Benachrichtigung an Support-Team senden
sendmail
[
from :zoho.adminuserid
to :"deborah.g@zohocorp.com"
subject :"no-reply"
message :"'Sehr geehrtes Team,<expression></expression><div><br></div><div>ein neues Ticket wird über Zendesk in Zoho DESK erstellt.</div><div><br></div><div>Ticketdetails – </div><div><br></div><div>Nutzername – ' + contactName + '</div><div><br></div><div><br></div><div>Anfragetext = " + requestBody + "</div><div><br></div>'"
]
return response;
}
Teil 2.2: So stellen Sie die Funktion als API-Schlüssel zur Verfügung:
- Klicken Sie auf das Symbol Einstellungen für die entsprechende Funktion, die eine API erhalten soll.
- Klicken Sie auf REST-API.
- Aktivieren Sie den Schieberegler API-Schlüssel.
- Klicken Sie auf Speichern.
Teil 3: Einen Webhook in Zendesk erstellen:
- Navigieren Sie zu "Admin > Erweiterung > HTTP-Ziel".
- Geben Sie die folgenden Informationen an:
- Funktions-URL
- Methode – GET oder POST
- Wählen Sie den Inhaltstyp "JSON". Um mehr zu erfahren, klicken Sie hier.

Hinweis:
- Die Funktions-URL ist die API-Schlüssel-URL, die Sie aus Schritt 2 erhalten.
Teil 4: Einen Auslöser in Zendesk erstellen:
- Bedingung – wenn ein Ticket erstellt wird.
- Ziel benachrichtigen – HTTP-Zielname


JSON-Textkörper Argumente:
{"arguments":
{
"requestBody":{
"details":{
"ticket":
{
"title":"{{ticket.title}}",
"description":"{{ticket.description}}",
"source":"{{ticket.via}}",
"priority":"{{ticket.priority}}",
"due_date":"{{ticket.due_date}}",
"URI":"{{ticket.url}}",
"status":"{{ticket.status}}"
},
"assignee":
{
"email":"{{ticket.assignee.email}}",
"name":"{{ticket.assignee.name}}",
"first_name":"{{ticket.assignee.first_name}}",
"last_name":"{{ticket.assignee.last_name}}"
},
"user":
{
"full_name":"{{current_user.name}}",
"first_name":"{{current_user.first_name}}",
"language":"{{current_user.language}}",
"details":"{{current_user.details}}",
"mobile":"{{current_user.phone}}",
"email":"{{current_user.email}}",
"organization":
{
"details":"{{current_user.organization.details}}",
"name":"{{current_user.organization.name}}"
}}
}}
}}
Teil 5: Ein Argument konfigurieren, das den gesamten Anfrage-Textkörper enthält.
Wenn ein Webhook Daten an eine Funktion sendet, gibt es keine Möglichkeit, die Anzahl der darin enthaltenen Argumente zu erfahren. Um dieses Problem zu lösen, können Sie die Funktion so konfigurieren, dass sie den gesamten Anfrage-Textkörper in einem einzigen Argument enthält.
Rufen Sie die Desk-API innerhalb der Funktion auf, und speichern Sie die Funktion.
Das Ergebnis:
Erstellen eines Tickets in Zendesk:


Das Ticket wird in Zoho Desk erstellt
