Serverloze functies - API-sleutel

Serverloze functies - API-sleutel gebruiken

API-sleutels van functies

Een serverloze functie in uw CRM-systeem kan worden aangeroepen vanuit elke toepassing van derden of vanuit het CRM-systeem met behulp van een webhook. De meeste webhooks ondersteunen OAuth2 echter niet. In dat geval kunt u de functie uitvoeren met behulp van de verificatiemethode met een API-sleutel, waarmee u of anderen de functie vanaf elke locatie kunnen aanroepen.

Het verschil tussen het gebruik van een API-sleutel en OAuth2 ligt in de verificatiemodus. De API-sleutel moet worden geverifieerd in de URL van de aanvraag en niet als koptekst.

Zie ook:

Voorbeeldfunctie:

Scenario:

Helpdesk- en ondersteuningsgerelateerde software zijn essentieel voor bedrijven waarbij interactie met klanten een grote rol speelt. Door uw helpdesksoftware te integreren in uw CRM-systeem bespaart u zich kostbare tijd en moeite om al uw bedrijfsgegevens vanaf één locatie te beheren.

Zendesk is software waarmee dit kan. Zoho Desk, ontwikkeld door Zoho, maakt dit ook mogelijk, maar het verschil is dat de integratie met de Zoho Desk automatisch verloopt in Zoho CRM, terwijl u Zendesk via widgets moet integreren. Wanneer u de ticketgegevens van de ene helpdesk naar de andere moet overbrengen, is bovendien een enorme inspanning vereist. Daarom is de integratie van Zendesk en Zoho Desk, via serverloze functies in Zoho CRM, erg handig en nuttig.

Het scenario waar we nu van uitgaan, is vergelijkbaar. Als er een ticket wordt gemaakt in Zendesk, moet er ook een ticket worden gemaakt in Zoho Desk, met dezelfde informatie.

Vereiste toepassingen:

  • Zendesk
  • Zoho Desk

Deel 1: een verbinding tot stand brengen

Om de functie in staat te stellen toepassingen van derden te gebruiken en de gegevensoverdracht te vergemakkelijken, moet u eerst een verbinding instellen tussen Zoho CRM en de software van derden. In dit geval zou dit Zendesk zijn. Meer informatie.

Maak verbinding met Zoho Desk:

Deel 2: de functie maken

Maak een functie in Zoho CRM (inclusief de code van de verbinding).

Deel 2.1: de functie schrijven

De functiecode is:

+

string createTicket(string requestBody){
  if(isNull(requestBody))
  {
    return "Geen inhoud";
  }
  if(!requestBody.contains("arguments"))
  {
    return "Ongeldige indeling";
  }
  requestBody = requestBody.get("arguments");
  requestBody = requestBody.get("requestBody");
  requestBody = requestBody.get("details");
  deskURL = "https://desk.zoho.com/api/v1/";
  header = {"orgId":"664950682"};
  departmentId = "264631000000006907"; //Haal ticket en gebruikersgegevens op uit requestBody
  userDetails = requestBody.get("user");
  ticketDetails = requestBody.get("ticket"); //Map maken
  param = Map(); //Informatie invoegen
  param.put("departmentId",departmentId);
  if(!userDetails.contains("email"))
  {
    return "E-mail is verplicht";
  }
  email = userDetails.get("email");
  param.put("email",email);
  contactName = "Guest";
  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");
  }
  //Haal contact-ID op uit contactnaam
  //Alle contactpersonen ophalen
  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)
  {
    //Maak nieuw contactpersoon aan
    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 is verplicht";
  }
  param.put("subject",ticketDetails.get("title"));
  if(!ticketDetails.contains("status"))
  {
    return "status is verplicht";
  }
  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 "Sorry, er is iets misgegaan. error ::: " + response.get("errorMessage");
  }
  //Melding verzenden aan supportteam
  sendmail
  [
    from :zoho.adminuserid
    to :"deborah.g@zohocorp.com"
    subject :"no-reply"
    message :"'Geacht team,<expression></expression><div><br></div><div>Een nieuwe ticket is aangemaakt in Zoho DESK via Zendesk.</div><div><br></div><div>Ticketgegevens - </div><div><br></div><div>User Name - ' + contactName + '</div><div><br></div><div><br></div><div>Request Body = " + requestBody + "</div><div><br></div>'"
  ]
  return response;
}

 

Deel 2.2: de functie beschikbaar maken als API-sleutel:

  1. Klik op het pictogram Instellingen voor de bijbehorende functie op basis waarvan een API moet worden gemaakt.
  2. Klik op REST API.
  3. API-sleutel-schuifregelaar inschakelen.
  4. Klik op Opslaan.

Deel 3: een webhook maken in Zendesk:

  1. Ga naar Beheerder > Extensie > HTTP-doel.
  2. Geef de volgende informatie op:
    • Functie-URL
    • Methode - GET of POST
    • Selecteer JSON onder Content-type. Klik hier voor meer informatie.

Let op:

  • De functie-URL is de URL van de API-sleutel die u verkrijgt in stap 2.

Deel 4: een trigger maken in Zendesk:

  1. Voorwaarde - wanneer een ticket wordt gemaakt.
  2. Meldingsdoel - HTTP-doelnaam

JSON-hoofdtekst van argumenten:

{"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}}"
},
"assigne":
{
"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}}"
}}
}}
}}

Deel 5: een argument configureren dat de gehele tekst van de aanvraag bevat.

Wanneer een webhook gegevens naar een functie verzendt, is er geen manier om vast te stellen hoeveel argumenten de functie bevat. Om dit probleem op te lossen kunt u de gehele hoofdtekst van de aanvraag opnemen in één argument van de functie.

Roep de Desk-API op in de functie en sla de functie op.

Het resultaat:

Een ticket maken in Zendesk:

Het ticket is gemaakt in Zoho Desk

Share this post : FacebookTwitter

Still can't find what you're looking for?

Write to us: support@zohocrm.com