Voicebox trên app di động
Mở trang chat độc lập trong WebView của iOS, Android, React Native, Flutter.
Dùng trang chat độc lập:
https://voicebox.aivigo.tech/widget/v1/frame.html?key=vb_xxx&mode=fullscreenKhông đưa danh tính hoặc hash vào URL. Sau khi trang tải xong, gọi window.Voicebox.identify({...}) bằng JavaScript.
- Sự kiện từ widget gửi về app có dạng
{"source":"voicebox","type":"ready|open|close|message|reply|error|handoff|session","data":{…}}. - Micro: iOS cần
NSMicrophoneUsageDescriptiontrongInfo.plist; Android cần quyềnRECORD_AUDIOvà cấp quyền trongonPermissionRequest.
let cfg = WKWebViewConfiguration()
cfg.allowsInlineMediaPlayback = true
cfg.mediaTypesRequiringUserActionForPlayback = []
cfg.userContentController.add(self, name: "voicebox") // nhận sự kiện
let web = WKWebView(frame: .zero, configuration: cfg)
web.load(URLRequest(url: URL(string: "https://voicebox.aivigo.tech/widget/v1/frame.html?key=vb_xxx&mode=fullscreen")!))
// trong webView(_:didFinish:)
web.evaluateJavaScript("window.Voicebox.identify({ref:'kh001',name:'An',hash:'\(hashFromServer)'})")Gửi ngữ cảnh màn hình từ app
window.postMessage({ source: 'voicebox-host', type: 'screen_context', data: { screen_context: { store_id: 'S01' } } }, '*');Muốn tự vẽ giao diện?
Nếu app không dùng WebView, hãy gọi Voicebox REST + SSE. Khi đó cần bật Cho phép app native cho voicebox (liên hệ hỗ trợ nếu chưa có trên Cổng đối tác).