• Non ci sono risultati.

Proposed infrastructure

5.2 Testing results

6.1.3 Proposed infrastructure

The first phase of PuffBot development consisted in the feasibility study.

This study takes in consideration the possible infrastructure to host the chatbot web-service. The working team is composed by 3 people having skill covering NLU and knowledge representations. The development of a multi-platform system, together with the voice system, is out of the scope of this work. For this reason two main issues must be solved by using external services:

1. Multi-platform integration

2. Voice systems, which includes both speech-to-text and text-to-speech As already explained in section 6.1.2, DialogFlow provides multi-platform support with just a few clicks together with a reliable STT and TTS sys-tems. What has to be developed internally is the domain Natural Language

6 – Use case

Understanding module, whose is the core part of the project. An infrastruc-ture proposal for the described web-service consists in the use of DialogFlow for redirection, via webhook, of the processed speech to the internal server, containing the NLU module. By using DialogFlow as a proxy, the module can simply work on the NLU task, while all the other pre-processing (SST) or post-processing (TTS) are made by the DialogFlow framework. This solution gives also the compatibility with multiple messaging applications without the need of changing the internal logic. All the compatibility issues are moved to DialogFlow. The drawback is the need for having a non self-signed certificate for the server, which has to be addressed from DialogFlow webhooks.

In the next sub-section the specific service integration with Telegram appli-cation is described.

Telegram integration

Telegram is a messaging application available for Android, iOS, Windows Phone, Windows, Linux and macOS. PuffBot will be hosted on the inter-nal server and will use DialogFlow for the integration of Telegram. The Telegram integration in DialogFlow consists in the creation of a bot for the chat. A Telegram bot is a special chat agent programmed to accomplish a specific task. A bot is easy to create on the Telegram platform, in a way that everyone can use it. Each bot has its own unique client access token, used to contact it. To start the conversation, the user has to search for the bot, open the chat and initiate the bot session with the "/start" command.

Each time the user sends a message to the bot, this will be redirected to DialogFlow. A Telegram message, in DialogFlow, is a JSON payload con-taining all the information which characterize that message. The JSON file contains the message ID, the chat ID, the timestamp and other information as reported in figure (6.1). The chat ID is the one identifying the user. The first time the user starts the bot, the chat ID will be stored in the internal server database and will then be enriched with the user personal informa-tion. By doing so, PuffBot has a way to contact the user when a particular event occurs (doctor appointment, weather changing, pollen detected in the air). In DialogFlow there are two main ways to trigger an intent.

1. by sending an user query (for that particular intent) to the bot 2. by linking an event to the intent and then triggering such event while the first one is the common way to trigger an intent and can be done also by POST request (by sending directly the query utterance in the JSON payload), the second is the way chosen in this work for the trig-gering. By linking an event to an intent, the latter can be triggered to invoke the former. For instance, when the Telegram start command is sent,

6 – Use case

Figure 6.1: An example of DialogFlow JSON payload for a Telegram mes-sage.

DialogFlow triggers the TELEGRAM_WELCOME event which is by de-fault associated to that particular command. In figure (6.2) the manual

Figure 6.2: How to manually trigger an event, and so the associated intent.

triggering of the TELEGRAM_WELCOME event is reported. Where the

<CLIENT_ACCESS_TOKEN> is the one of the bot to contact (can be retrieved through Telegram), the <API_VERSION> corresponds with the DialogFlow API version to use (available versions can be found on the docs) and the <EVENT> is the name of the event to trigger. When a particular event is triggered (like the weather changing), PuffBot has then to contact the user. To do so, the Telegram REST API can be used. Figure (6.3)

6 – Use case

shown the way to manually send a message, where the TELEGRAM_TO-KEN is the token identifying the telegram bot, the CHAT_ID is the ID of the chat on which the message has to be sent (it corresponds to the user ID if the group is private) and the TEXT_TO_SENT is the formatted string to be sent as message. The TELEGRAM_TOKEN can be found in the integration tab of DialogFlow console, by clicking on the telegram icon.

Figure 6.3: How to use the Telegram REST API to send a message to a particular user.

Finally the triggering mechanism allow PuffBot to contact the user when a particular event occurred. By storing all the chat id at server side, it is possible to send a message to a particular user with the Telegram REST API. The send_message is called inside the webhook correspondent to a particular intent. This intent is then associated to an event which is trig-gered every time is needed.

Using DialogFlow as a proxy removes the needing for implementing a Tele-gram interface for PuffBot service. The only thing needed is a non self-signed certificate for the server, in order to be called via API from the DialogFlow webhook.

A final schematic representation of the Telegram integration is available in figure (6.4).

The prototype developed for Telegram is available and presents the two phases of on-boarding and first diagnosis. The current list of intents im-plemented in PuffBot is almost 40, 12 of them are part of the on-boarding phase. All the intents were defined with the supervision of the Trentino ASL, to better model the domain specific information. Furthermore, intents were structured in a hierarchical fashion, in order to group together similar intents. For instance, several sub-intents are related to the macro-intent

"cough", some of them are "cough frequency", "last cough episode" and so on. A conversation sample is shown in figure (6.5). Unfortunately for the English speakers, the prototype was developed in Italian only. Anyway the project is still work in progress and English and Chinese porting are com-ing. The picture shows the on-boarding phase, consisting in asking basic information about the user. Here were reported questions about name, city, weather of the city, practiced sports, smoking habit, work place information and if the user often suffers from colds. Some important information, such as the city weather, are in project to be retrieved through third party APIs.

6 – Use case

Figure 6.4: Proposed web-service infrastructure for Telegram integration.

The second phase instead consists in asking questions about the cough, for which the user has suffered in the last period. At the end of the diagnosis, PuffBot resumes all the symptoms in the last message, together with a little suggestion, consisting of, in this particular case, a little walk in the park.

Documenti correlati