Serverlose Funktionen – API-Schlüssel

    Serverlose Funktionen – Verwendung des API-Schlüssels

    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:

    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:

    1. Klicken Sie auf das Symbol Einstellungen für die entsprechende Funktion, die eine API erhalten soll.
    2. Klicken Sie auf REST-API.
    3. Aktivieren Sie den Schieberegler API-Schlüssel.
    4. Klicken Sie auf Speichern.

    Teil 3: Einen Webhook in Zendesk erstellen:

    1. Navigieren Sie zu "Admin > Erweiterung > HTTP-Ziel".
    2. 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:

    1. Bedingung – wenn ein Ticket erstellt wird.
    2. 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

    Share this post : FacebookTwitter

    Finden Sie immer noch nicht, wonach Sie suchen?

    Schreib uns: support@zohocrm.com

     
     

    Thanks for the recommendations. We will incorporate them at the earliest.

    Übersetzung – Feedback

    Wir würden uns freuen, wenn Sie uns Ihre Meinung zur Übersetzung dieser Seite mitteilen.

    Name*

    E-Mail*

    Betreff*

    Fehlerbeschreibung

    Page URL

    Screenshots Dateien anhängen   Jede Datei darf höchstens 20 MB betragen.Sie können maximal 5 Dateien auf einmal anhängen.

    Feedback