万一其他人为此苦苦挣扎,我设法取得了一些进展,我的堆栈是 ionic 5 和 angular 8,首先我使用这个简单的代码创建了一个负责将 Tawk 加载到我的 PWA 的组件
import {Component, Inject, Input, OnDestroy, OnInit, Renderer2} from '@angular/core';
import {DOCUMENT} from '@angular/common';
@Component({
selector: 'app-tawk-chat',
templateUrl: './tawk-chat.component.html',
styleUrls: ['./tawk-chat.component.scss'],
})
export class TawkChatComponent implements OnInit {
@Input() id: string;
script = this._renderer.createElement('script');
constructor(private _renderer: Renderer2, @Inject(DOCUMENT) private _document, ) {}
ngOnInit() {
this.script.text = `var Tawk_API = Tawk_API || {}, Tawk_LoadStart = new Date();
(function () {
var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0];
s1.async = true;
s1.src = 'https://embed.tawk.to/${this.id}/default';
s1.charset = 'UTF-8';
s1.setAttribute('crossorigin', '*');
s0.parentNode.insertBefore(s1, s0);
})();`;
this._renderer.appendChild(this._document.body, this.script);
}
}
像这样在我的 app.component.html 上引用了组件
<ion-app>
<ion-router-outlet id="content1"></ion-router-outlet>
<app-tawk-chat [id]="_enviroment.tawkId"></app-tawk-chat>
</ion-app>
然后从这里发现https://www.tawk.to/knowledgebase/advanced-features/using-a-text-link-or-button-to-open-the-chat-widget/您可以将小部件设置为默认隐藏。
最后,只要你想打开聊天就调用这个函数
openChat() {
window.Tawk_API.maximize();
}
此外,您可以使用 this._window.Tawk_API 访问https://www.tawk.to/javascript-api/#onChatStarted上定义的任何方法
我仍然面临的唯一限制是以下
客户端打开聊天并发送消息
操作员收到消息并正在键入响应
客户在收到回复前关闭聊天
操作员发送响应
WebApp 会发出轻柔的点击噪音,但没有通知。
我想我需要通过推送通知进行某种解决方法,因此当操作员与某人聊天并且该人关闭聊天时,会“手动”发送通知