Vue integriert Tencent TIM Instant Messaging

Vue integriert Tencent TIM Instant Messaging

In diesem Artikel wird hauptsächlich die Integration von Tencent TIM Instant Messaging in Vue vorgestellt und mit Ihnen geteilt. Die Einzelheiten lauten wie folgt:

Über

Vorwort

Das Projekt muss eine Kundendienstfunktion, ein Applet auf der Benutzerseite und ein Webterminal für Kundendienstmitarbeiter haben, sodass Tencents Tim

Vorbereitung

Erstellen Sie eine Anwendung auf der offiziellen Website von Tencent Cloud und erhalten Sie die entsprechende SDKAppID und die entsprechenden Schlüsselinformationen

Installieren des SDK

(1) Befehle zur Verwendung von Webprojekten

// IM Web SDK
npm installiere tim-js-sdk --save
// COS SDK zum Senden von Bildern, Dateien und anderen Nachrichten erforderlich
npm installiere cos-js-sdk-v5 --save

(2) Befehle zur Verwendung von Miniprogrammprojekten

// IM-Applet-SDK
npm installiere tim-wx-sdk --save
// COS SDK zum Senden von Bildern, Dateien und anderen Nachrichten erforderlich
npm installiere cos-wx-sdk-v5 --save

Eingeführt in main.js

importiere TIM von „tim-js-sdk“;
// importiere TIM von „tim-wx-sdk“; // Für die WeChat-Applet-Umgebung heben Sie bitte die Kommentierung dieser Zeile auf und kommentieren Sie „importiere TIM von „tim-js-sdk“;“ aus.
COS aus „cos-js-sdk-v5“ importieren;
// importiere COS von „cos-wx-sdk-v5“; // Für die WeChat-Applet-Umgebung heben Sie bitte die Kommentierung dieser Zeile auf und kommentieren Sie „importiere COS von „cos-js-sdk-v5“;“ aus.

// Eine SDK-Instanz erstellen. Die Methode TIM.create() gibt nur für dieselbe SDKAppID dieselbe Instanz zurück.
  SDKAppID: 0 // Beim Zugriff müssen Sie 0 durch die SDKAppID Ihrer Instant Messaging-Anwendung ersetzen
};
let tim = TIM.create(options); // SDK-Instanzen werden normalerweise durch tim dargestellt // SDK-Protokollausgabeebene festlegen. Detaillierte Ebenen finden Sie in der Beschreibung der setLogLevel-Schnittstelle tim.setLogLevel(0); // Normale Ebene mit einer großen Anzahl von Protokollen, empfohlen für den Zugriff // tim.setLogLevel(1); // Release-Ebene, SDK gibt wichtige Informationen aus, empfohlen für Produktionsumgebungen // Tencent Cloud Object Storage Service SDK (im Folgenden als COS SDK bezeichnet) als Plug-In registrieren. Wenn das IM SDK Nachrichten wie Dateien und Bilder sendet, muss es den COS-Dienst von Tencent Cloud verwenden wx.$app = tim
wx.$app.registerPlugin({'cos-wx-sdk': COS})
wx.store = speichern
wx.TIM = TIM
 wx.dayjs = Tagjs
 dayjs.locale('zh-cn')
lass $bus = neues Vue()
Vue.prototype.TIM = TIM
Vue.prototype.$type = TYPEN
Vue.prototype.$store = speichern
Vue.prototype.$bus = $bus
// Auf Offline-Nachrichten und Benachrichtigungen über den Abschluss der Sitzungslistensynchronisierung warten tim.on(TIM.EVENT.SDK_READY, onReadyStateUpdate, this)
// Benachrichtigung erhalten, dass SDK in den Status „Nicht bereit“ wechselt. SDK kann derzeit nicht normal funktionieren tim.on(TIM.EVENT.SDK_NOT_READY, onReadyStateUpdate, this)
// Kickout-Benachrichtigung erhalten tim.on(TIM.EVENT.KICKED_OUT, kickOut, this)
// Einheitliche Fehlerbehandlung tim.on(TIM.EVENT.ERROR, onError, this)
// Empfangen Sie die gepushte Nachricht, durchlaufen Sie event.data, um die Daten der Nachrichtenliste abzurufen und rendern Sie sie auf der Seite tim.on(TIM.EVENT.MESSAGE_RECEIVED, messageReceived, this)
// Aktualisiere die Konversationsliste tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, convListUpdate, this)
// Aktualisieren Sie die Gruppenliste tim.on(TIM.EVENT.GROUP_LIST_UPDATED, groupListUpdate, this)
// Schwarze Liste aktualisieren tim.on(TIM.EVENT.BLACKLIST_UPDATED, blackListUpdate, this)
// Netzwerkstatus ändert sich tim.on(TIM.EVENT.NET_STATE_CHANGE, netStateChange, this)
Funktion onReadyStateUpdate ({ Name }) {
  const isSDKReady = (Name === TIM.EVENT.SDK_READY)
  wenn (isSDKReady) {
  //Benutzerinformationen wx.$app.getMyProfile().then(res => {
      store.commit('updateMyInfo', res.data)
   uni.setStorageSync('name', res.data.nick);
   console.log(Name,'updateMyInfo');
    })
    //Schwarze Liste, gespeichert in vuex wx.$app.getBlacklist().then(res => {
      store.commit('setBlacklist', res.data)
    })
  }
  store.commit('setSdkReady', isSDKReady)
}
// Offline-Kick-Funktion. Sie müssen eine erneute Anmeldung einrichten, nachdem Sie offline geworfen wurden. Funktion kickOut (Ereignis) {
  store.dispatch('Store zurücksetzen')
  wx.showToast({
    Titel: „Sie wurden aus der Leitung geworfen“,
    Symbol: „keine“,
    Dauer: 1500
  })
  setzeTimeout(() => {
    wx.reLaunch({
      URL: „../Konto/Anmelden“
    })
  }, 500)
}
Funktion beiFehler (Ereignis) {
  // Netzwerkfehler, kein Toast-Popup && SDK nicht initialisiert, vollständiger Fehler, wenn (event.data.message && event.data.code && event.data.code !== 2800 && event.data.code !== 2999) {
    store.commit('showToast', {
      Titel: Ereignis.Daten.Nachricht,
      Dauer: 2000
    })
  }
}
//
Funktion checkoutNetState (Status) {
  Schalter (Zustand) {
    Fall TIM.TYPES.NET_STATE_CONNECTED:
      return { Titel: 'Mit dem Netzwerk verbunden', Dauer: 2000 }
    Fall TIM.TYPES.NET_STATE_CONNECTING:
      return { title: 'Das aktuelle Netzwerk ist instabil', Dauer: 2000 }
    Fall TIM.TYPES.NET_STATE_DISCONNECTED:
      return { title: 'Das aktuelle Netzwerk ist nicht verfügbar', Dauer: 2000 }
    Standard:
      zurückkehren ''
  }
}
//Funktion zur Änderung des Netzwerkstatus function netStateChange (event) {
  Konsole.log(Ereignis.Daten.Status)
  store.commit('showToast', checkoutNetState(Ereignis.Daten.Zustand))
}
//Funktion zum Senden und Empfangen von Nachrichten messageReceived (Ereignis) {
Konsole.log(Ereignis,'main.js');
  für (lass i = 0; i < Ereignis.Daten.Länge; i++) {
    let item = Ereignis.Daten[i]
    wenn (Artikel.Typ === TYPES.MSG_GRP_TIP) {
      wenn (Artikel.Nutzlast.Operationstyp) {
        $bus.$emit('GruppennameUpdate', Artikel.Nutzlast)
      }
    }
    wenn (Artikel.Typ === TYPES.MSG_CUSTOM) {
      wenn (isJSON(item.payload.data)) {
        const videoCustom = JSON.parse(item.payload.data)
  console.log(item,'Homepage-Informationen')
        wenn (videoCustom.version === 3) {
          Schalter (videoCustom.action) {
            // Die Gegenstelle ruft mich an Fall 0:
              wenn (!store.getters.isCalling) {
                let url = `call?args=${item.payload.data}&&from=${item.from}&&to=${item.to}&&name=`+uni.getStorageSync('name')+'&&nick='+'';
    Konsole.log(URL,'URL')
                wx.navigateTo({url})
              } anders {
                $bus.$emit('istAnrufend', Artikel)
              }
              brechen
            // Die Gegenpartei storniert Fall 1:
              wx.navigateZurück({
                Delta: 1
              })
              brechen
            // Die Gegenpartei lehnt Fall 2 ab:
              $bus.$emit('beiAblehnung')
              brechen
            // Der andere Teilnehmer antwortet 1 Minute lang nicht
            Fall 3:
              wx.navigateZurück({
                Delta: 1
              })
              brechen
            // Der andere Teilnehmer nimmt den Anruf entgegen Fall 4:
              $bus.$emit('onCall', videoCustom)
              brechen
            // Der Gesprächspartner legt auf Fall 5:
              $bus.$emit('beimSchließen')
              brechen
            // Die Gegenstelle ist am Telefon Fall 6:
              $bus.$emit('beiBesetzt')
              brechen
            Standard:
              brechen
          }
        }
      }
    }
  }
  store.dispatch('beiMessageEvent', Ereignis)
}
Funktion convListUpdate (Ereignis) {
  store.commit('updateAllConversation', event.data)
}

Funktion groupListUpdate (Ereignis) {
  store.commit('updateGroupList', event.data)
}

Funktion blackListUpdate (Ereignis) {
  store.commit('UpdateBlacklist', Ereignisdaten)
}

Dies ist das Ende dieses Artikels über die Integration von Tencent TIM Instant Messaging in Vue. Weitere relevante Inhalte zu Vue Tencent TIM Instant Messaging finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Benutzerdefinierte Vue-Komponente zur Realisierung der Adressbuchfunktion
  • Entwicklungsbeispiel für die Kommunikation zwischen übergeordneten und untergeordneten Komponenten in Vue.js
  • Kommunikationsmethode für übergeordnete und untergeordnete Komponenten der VueJs-Komponente
  • Beispielcode für die Kommunikation von Vue2.0-Komponentenwerten
  • Sammlung von acht Kommunikationsmethoden für Vue-Komponenten (empfohlen)
  • Kommunikation zwischen übergeordneten und untergeordneten Komponenten in Vue und Verwendung von Sync zum Synchronisieren der Daten übergeordneter und untergeordneter Komponenten

<<:  Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL

>>:  Docker installiert und führt den RabbitMQ-Beispielcode aus

Artikel empfehlen

HTML-Tabellen-Tag-Tutorial (33): Attribut für vertikale Zellenausrichtung VALIGN

In vertikaler Richtung können Sie die Zellenausri...

Konfigurationsmethode für das Nginx-Anforderungslimit

Nginx ist ein leistungsstarker, leistungsstarker ...

Verwendung von TypeScript-Generics

Inhaltsverzeichnis 1. Einfach zu bedienen 2. Verw...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...

Beispielanalyse der Verwendung gespeicherter MySQL-Prozeduren

Dieser Artikel beschreibt die Verwendung gespeich...

Schwebendes Menü, kann einen Bildlaufeffekt nach oben und unten erzielen

Der Code kann noch weiter optimiert werden. Aus Z...

So aktualisieren Sie https unter Nginx

Kaufzertifikat Sie können es beim Cloud Shield Ce...

Zabbix überwacht den Prozess der Linux-Systemdienste

Zabbix erkennt automatisch Regeln zur Überwachung...

Verwenden Sie vue2+elementui für Hover-Prompts

Die Hover-Prompts von Vue2+elementui sind in exte...

Webdesign-Erfahrung: Effizientes Schreiben von Webcode

Ursprünglich sollte dieses siebte Kapitel eine aus...

So stellen Sie Tencent Cloud Server von Grund auf bereit

Da dies mein erster Beitrag ist, weisen Sie mich ...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Diese eingeführten HTML-Tags entsprechen nicht un...

Einführung und Verwendung des Javascript-Generators

Was ist ein Generator? Ein Generator ist ein Code...