Ansicht von 1 Antwort-Thread
  • Autor
    Beiträge
    • #41670
      marcel-graf
      Teilnehmer

        als Erweiterung zu dem Thema „Add Button zum kopieren der Ticketnummer„, haben wir jetzt noch eine Button “ Kundenbenutzer anrufen“ eingefügt, mit dem man den Kundenbenutzer anrufen kann.

        Vorraussetzung:

        -Telefonnumer in den Stammdaten vom Kundenbenutzer gepflegt

        -Telefonanalge unterstützt die Funktion, dass man per URL Aufruf einen Call absetzen kann.

        Folgender Code wird in der Datei „AgentTicketZoom.tt“ in den <h1> Tag eingefügt, siehe dazu Post „Add Button zum kopieren der Ticketnummer“.

        <!– 2. CTI-Anruf-Button (Einfache Anführungszeichen und kurzer CSS-Pfad) –>
        <button type=“button“
        class=“Button“
        style=“margin-left: 10px; padding: 2px 8px; font-size: 11px; vertical-align: middle; cursor: pointer; display: inline-block; background-color: #d9e1f2; border-color: #8ea9db;“
        onclick=“event.stopPropagation();

        let customerPhone = “;

        // Wir starten direkt in der Kunden-Box und holen ALLE Absätze
        const elements = document.querySelectorAll(‚#Async_0200-CustomerInformation p.Value.FixedValueSmall‘);

        for (let el of elements) {
        const rawText = el.textContent.trim();
        // Wenn der Absatz eine Zahl enthält und KEIN @-Zeichen (E-Mail) ist, haben wir die Telefonnummer
        if (/[0-9]/.test(rawText) && !rawText.includes(‚@‘)) {
        customerPhone = rawText;
        break;
        }
        }

        // Bereinigt die Rufnummer für Ihren AutoIt-Client
        customerPhone = customerPhone.replace(/[^0-9+]/g, “);

        // Sicherheitsprüfung, falls kein Feld zutrifft
        if (!customerPhone || customerPhone.length < 3) {
        this.textContent = ‚Keine Nummer!‘;
        setTimeout(() => this.textContent = ‚Kunden anrufen‘, 2000);
        return;
        }

        // Die CTI-URL für Ihren CTI-Client
        const ctiUrl = ‚http://localhost:4444/acc-client/cti?cmd=dial&param=&#8216; + encodeURIComponent(customerPhone);

        // HTTP-Aufruf im Hintergrund abfeuern (InetRead)
        fetch(ctiUrl, { mode: ’no-cors‘ })
        .then(() => {
        this.textContent = ‚Wähle: ‚ + customerPhone;
        })
        .catch(err => {
        console.error(‚CTI Fehler:‘, err);
        this.textContent = ‚Fehler!‘;
        });

        setTimeout(() => this.textContent = ‚Kunden anrufen‘, 2500);“>
        Kunden anrufen
        </button>

        Gruß Marcel

         

      • #41672
        marcel-graf
        Teilnehmer

          nochmal geändertes Design

          <h1>
          #[% Data.Hook %][% Config(‚Ticket::HookDivider‘) %][% Data.TicketNumber | html %] &mdash; [% Data.Title | html %]

          <!– 1. Der Kopier-Button mit erweiterter Breite (150px) –>
          <button type=“button“
          class=“Button“
          style=“margin-left: 15px; padding: 2px 0; font-size: 11px; vertical-align: middle; cursor: pointer; display: inline-block; width: 150px; text-align: center;“
          onclick=“event.stopPropagation();
          const tempInput = document.createElement(‚textarea‘);
          tempInput.value = ‚[% Data.TicketNumber %]‘;
          document.body.appendChild(tempInput);
          tempInput.select();
          document.execCommand(‚copy‘);
          document.body.removeChild(tempInput);
          this.textContent = ‚📋 Kopiert!‘;
          setTimeout(() => this.textContent = ‚📋 Ticketnummer kopieren‘, 2000);“>
          📋 Ticketnummer kopieren
          </button>

          <!– 2. Der Anruf-Button mit der identischen Breite (150px) –>
          <button type=“button“
          class=“Button“
          style=“margin-left: 10px; padding: 2px 0; font-size: 11px; vertical-align: middle; cursor: pointer; display: inline-block; width: 150px; text-align: center;“
          onclick=“event.stopPropagation();

          let customerPhone = “;
          const elements = document.querySelectorAll(‚#Async_0200-CustomerInformation p.Value.FixedValueSmall‘);

          for (let el of elements) {
          const rawText = el.textContent.trim();
          if (/[0-9]/.test(rawText) && !rawText.includes(‚@‘)) {
          customerPhone = rawText;
          break;
          }
          }

          customerPhone = customerPhone.replace(/[^0-9+]/g, “);

          if (!customerPhone || customerPhone.length < 3) {
          this.textContent = ‚📞 Keine Nummer!‘;
          setTimeout(() => this.textContent = ‚📞 Kunden anrufen‘, 2000);
          return;
          }

          const ctiUrl = ‚http://localhost:4444/acc-client/cti?cmd=dial&param=&#8216; + encodeURIComponent(customerPhone);

          fetch(ctiUrl, { mode: ’no-cors‘ })
          .then(() => {
          this.textContent = ‚📞 Wähle…‘;
          })
          .catch(err => {
          console.error(‚CTI Fehler:‘, err);
          this.textContent = ‚📞 Fehler!‘;
          });

          setTimeout(() => this.textContent = ‚📞 Kunden anrufen‘, 2500);“>
          📞 Kunden anrufen
          </button>
          </h1>

      Ansicht von 1 Antwort-Thread
      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.