angular-chat-widget-rasa
Version:
A chatbot widget that is able to connect to a rasa chatbot using SocketIO
95 lines • 6.04 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import io from 'socket.io-client';
import { Observable } from 'rxjs/Observable';
import * as i0 from "@angular/core";
export class ChatService {
constructor() {
this.getMessages = (/**
* @return {?}
*/
() => {
return Observable.create((/**
* @param {?} observer
* @return {?}
*/
(observer) => {
this.socket.on('bot_uttered', (/**
* @param {?} message
* @return {?}
*/
(message) => {
observer.next(message);
}));
}));
});
}
/**
* @param {?} url
* @return {?}
*/
connect(url) {
this.socket = io(url);
this.socket.on('connect', (/**
* @return {?}
*/
() => {
this.socket.emit('session_request', { 'session_id': this.socket.id });
}));
this.socket.on('session_confirm', (/**
* @param {?} remote_id
* @return {?}
*/
(remote_id) => {
}));
this.socket.on('connect_error', (/**
* @param {?} error
* @return {?}
*/
(error) => {
console.log(error);
}));
this.socket.on('error', (/**
* @param {?} error
* @return {?}
*/
(error) => {
console.log(error);
}));
this.socket.on('disconnect', (/**
* @param {?} reason
* @return {?}
*/
(reason) => {
console.log(reason);
}));
}
/**
* @param {?} message
* @return {?}
*/
sendMessage(message) {
this.socket.emit('user_uttered', { 'message': message });
}
}
ChatService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
ChatService.ctorParameters = () => [];
/** @nocollapse */ ChatService.ngInjectableDef = i0.defineInjectable({ factory: function ChatService_Factory() { return new ChatService(); }, token: ChatService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
ChatService.prototype.socket;
/** @type {?} */
ChatService.prototype.getMessages;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGJvdC1yYXNhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWNoYXQtd2lkZ2V0LXJhc2EvIiwic291cmNlcyI6WyJsaWIvY2hhdGJvdC1yYXNhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sV0FBVztJQUl0QjtRQTRCTyxnQkFBVzs7O1FBQUcsR0FBRyxFQUFFO1lBQ3BCLE9BQU8sVUFBVSxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhOzs7O2dCQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ3RDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLENBQUMsRUFBQyxDQUFDO1lBQ1AsQ0FBQyxFQUFDLENBQUM7UUFDVCxDQUFDLEVBQUE7SUFoQ0QsQ0FBQzs7Ozs7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTOzs7UUFBRSxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxZQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFBO1FBQ3BFLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsaUJBQWlCOzs7O1FBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNoRCxDQUFDLEVBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGVBQWU7Ozs7UUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxFQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPOzs7O1FBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsRUFBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWTs7OztRQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRU0sV0FBVyxDQUFDLE9BQU87UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7O1lBakNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7Ozs7OztJQUdDLDZCQUFlOztJQThCZixrQ0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBpbyBmcm9tICdzb2NrZXQuaW8tY2xpZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGF0U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzb2NrZXQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBjb25uZWN0KHVybDogc3RyaW5nKXtcbiAgICB0aGlzLnNvY2tldCA9IGlvKHVybCk7XG4gICAgdGhpcy5zb2NrZXQub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICB0aGlzLnNvY2tldC5lbWl0KCdzZXNzaW9uX3JlcXVlc3QnLCB7J3Nlc3Npb25faWQnOnRoaXMuc29ja2V0LmlkfSlcbiAgICB9KTtcbiAgICB0aGlzLnNvY2tldC5vbignc2Vzc2lvbl9jb25maXJtJywgKHJlbW90ZV9pZCkgPT4ge1xuICAgIH0pXG4gICAgdGhpcy5zb2NrZXQub24oJ2Nvbm5lY3RfZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc29ja2V0Lm9uKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zb2NrZXQub24oJ2Rpc2Nvbm5lY3QnLCAocmVhc29uKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNlbmRNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICB0aGlzLnNvY2tldC5lbWl0KCd1c2VyX3V0dGVyZWQnLCB7J21lc3NhZ2UnOm1lc3NhZ2V9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zb2NrZXQub24oJ2JvdF91dHRlcmVkJywgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICB9XG59XG4iXX0=