• Deutsch
  • English
  • Anmeldung OTOBO Community
+49 (0)9427 68 39 000
OTOBO
  • SOFTWARE
    • Software | Überblick
    • IT Service Management
    • Customer Service Management
    • Enterprise Service Management
    • Demo
    • Download
    • Dokumentation
  • SERVICES
    • Überblick Services
    • Beratung
    • Training
    • Entwicklung
    • OTRS Migration zu OTOBO
    • Support
    • Managed Service
    • Support-Portal
  • UNTERNEHMEN
    • Über uns
    • Karriere
    • Partner
    • Kontakt
    • Newsletter
  • RESSOURCEN
  • COMMUNITY
    • Open Source
    • Community Forum
    • Download
    • Dokumentation
    • OTOBO übersetzen
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
Ansicht von 1 Antwort-Thread
  • Autor
    Beiträge
    • 11. Juni 2026 um 12:03 Uhr - Views: 168 #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

         

      • 11. Juni 2026 um 12:19 Uhr #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>

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

      Foren durchsuchen

      Anmeldung

      Anmeldung

      Konto erstellen
      Passwort vergessen?

      Login via Social

      Profil

      Bitte vervollständigen Sie nach der Registrierung Ihr Profil, das vereinfacht die spätere Kommunikation enorm. Ihre Profileinstellung finden Sie, wenn Sie auf Ihr Avatarbild klicken.

      Sie können Ihren Avatar ändern, indem Sie sich mit Ihrer E-Mail-Adresse unter gravatar.com registrieren.

      Letzte Aktivitäten

      • Dynamische Felder in AgentTicketNote mit ACL verstecken
      • FAQ: kaputtes Copy & Paste von Bildern zwischen Artikeln
      • Benachrichtigung „Ticket wurde mir entzogen“ möglich?
      • Statistik Anzahl Tickets pro Agent
      • Docker: Ändern des redis Hosts

      Unternehmen

      Über uns
      Karriere
      Stellenbörse
      Partner werden
      Kontakt
      Newsletter

      OTOBO | Simplify work and create exceptional service experiences.

      Die Source Code Owner und Maintainer hinter OTOBO.

      Software

      Service Management-Plattform
      OTOBO Demo
      OTOBO Download
      OTOBO Dokumentation

      Security-Problem melden:
      security@otobo.org

      Services

      Support-Portal
      Beratung
      Training
      Support
      Managed Services
      Erweiterung
      OTRS Migration
      Partner finden

      Community

      Open Source
      Community Forum
      Mitmachen
      OTOBO Developer
      OTOBO@GitHub

      © 2026 Rother OSS GmbH | All rights reserved.
      • Cookie-Einstellungen
      • Impressum
      • Datenschutz
      • Haftungsausschluss
      Nach oben scrollen Nach oben scrollen Nach oben scrollen