{"id":16611060,"url":"https://github.com/pkief/angular-events-chatbot","last_synced_at":"2025-03-16T21:31:04.423Z","repository":{"id":30861250,"uuid":"121811843","full_name":"PKief/angular-events-chatbot","owner":"PKief","description":"Chatbot that searches for events in your environment.","archived":false,"fork":false,"pushed_at":"2024-08-31T06:31:40.000Z","size":4163,"stargazers_count":10,"open_issues_count":16,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-27T14:32:36.788Z","etag":null,"topics":["angular-cli","angular-material","chatbot","dialogflow","firebase","firebase-functions","google-places-api"],"latest_commit_sha":null,"homepage":"https://events-chatbot.firebaseapp.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PKief.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-16T23:29:04.000Z","updated_at":"2024-11-17T14:38:39.000Z","dependencies_parsed_at":"2023-02-15T11:16:08.847Z","dependency_job_id":"8027bdd8-3b40-4433-a7d1-cdb58ecb3a51","html_url":"https://github.com/PKief/angular-events-chatbot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKief%2Fangular-events-chatbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKief%2Fangular-events-chatbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKief%2Fangular-events-chatbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PKief%2Fangular-events-chatbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PKief","download_url":"https://codeload.github.com/PKief/angular-events-chatbot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830949,"owners_count":20354854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular-cli","angular-material","chatbot","dialogflow","firebase","firebase-functions","google-places-api"],"created_at":"2024-10-12T01:34:32.583Z","updated_at":"2025-03-16T21:31:03.899Z","avatar_url":"https://github.com/PKief.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Angular Events Chatbot\n\nA chatbot that provides you some interesting locations in your neighborhood. \n\nYou are bored and want to do something?\n\n\u003e Just ask the bot:\n\u003ca href=\"https://events-chatbot.firebaseapp.com/\" target=\"_blank\"\u003ehttps://events-chatbot.firebaseapp.com\u003c/a\u003e\n\n## Components\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/components.png\" alt=\"components\" width=\"700px\"/\u003e\n\u003c/p\u003e\n\n## Use cases\nYou can ask the bot multiple questions and he will react properly. \n\nPossible questions you can ask the bot (only German):\n\n- \"Wie kannst du mir helfen?\"\n- \"Wer bist du?\"\n- \"Was kann ich heute tun?\"\n- \"Was schlägst du mir vor?\"\n\nor more precisely:\n\n- \"Ich will Pizza essen gehen\"\n- \"Ich will in Karlsruhe Pizza essen gehen\"\n\nbe kind:\n\n- \"Danke schön\"\n- \"Du bist der Beste\"\n\nmake smalltalk:\n\n- \"Wie geht es dir?\"\n- \"Wie heißt du?\"\n\nor send smileys:\n\n- \":)\"\n- \"xD\"\n- \"lol\"\n\nor where you want to search the locations:\n\n- \"Ich wohne in Karlsruhe\"\n- \"Karlsruhe\"\n\nand it is even possible to let the bot find out your current position:\n\n\u003cimg src=\"./images/get_my_location.gif\" alt=\"get my location\" width=\"350px\"\u003e\n\n#### What should I do with a selected location?\n\nSave your favored location:\n\n- \"Favorisiere das\"\n- \"Merke dir diesen Ort\"\n\nShow you favored locations:\n\n- \"Zeige meine Favoriten\"\n- \"Was sind meine Favoriten?\"\n\nRemove favored location:\n\n- \"Entferne das aus den Favoriten\"\n- \"Lösche diesen Favoriten\"\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/screenshot_01.png\" alt=\"get my location\" width=\"30%\"\u003e\n    \u003cimg src=\"./images/screenshot_02.png\" alt=\"get my location\" width=\"30%\"\u003e\n    \u003cimg src=\"./images/screenshot_03.png\" alt=\"get my location\" width=\"30%\"\u003e\n\u003c/p\u003e\n\n\n## Architecture\n\n### Angular\nThe chatbot is based on the [Angular Framework](https://angular.io/). It was created and implemented with the help of [Angular CLI](https://cli.angular.io/) and [Angular Material](https://material.angular.io/).\n\n### Dialogflow\nTo understand what the user is actually saying the bot sends the input message to [Dialogflow](https://dialogflow.com/). Dialogflow helps the bot to create an interactive and dynamic conversation with the user. Next it enables the bot to behave natural, i.e. the bot answers differently to same questions. The bot also provides the user with suggestions for possible next interaction steps.\n\n### Firebase Functions\nThe chatbot uses [Firebase Functions](https://firebase.google.com/docs/functions/) for the backend functionality. The backend is very simple and only used as a proxy for the Google Places API to avoid CORS issues.\n\nThe functions provide some APIs to call the Google Places APIs to get the requested information about locations. The [Express](https://expressjs.com/) library is used here.\n\n### HTML5 Web Storage\nThe HTML5 local storage is used to provide a straightforward usage of the bot without many barriers such as authentication or user sessions. Basically the following information is cached in the local storage:\n\n- Favored locations\n- Design theme\n\n### Overview\n\nThe following image gives a short overview of the underlying technologies of the chatbot:\n\n\u003cp align=\"center\"\u003e    \n    \u003cimg src=\"images/architecture.png\" alt=\"architecture image\" width=\"700px\"/\u003e\n\u003c/p\u003e\n\n## Development\n\n### Node.js\nInstall [Node.js](https://nodejs.org/en/) on your machine.\n\n### Angular\nThe bot is implemented as an Angular web application. To start the application navigate into the `bot-client`-directory and run the following commands in your terminal:\n\nInstall the required modules:\n```\nnpm install\n```\n\nRun the application:\n```\nnpm start\n```\n\nThis command creates a small development server which is running in your browser: [http://localhost:4200/](http://localhost:4200/).\n\n\n#### Angular CLI\nYou can install Angular CLI globally with this command:\n\n```\nnpm install @angular/cli --global\n```\n\nThen you can start the application with `ng serve --open`.\n\nFinally you also want to deploy the application on a production server. Therefore you have to type the following command in your terminal:\n\n```\nnpm run build\n```\n\nThis creates a `dist`-folder containing the bundled files that can be uploaded to a web server.\n\n### Dialogflow\nThis application is so configured that is uses a specific token to get access to the dialogflow project. The token cannot be used for other projects.\n\nTokens can be found in the `/bot-client/src/environments`-directory in the `environment.ts`-file.\n\n### Google API\nFor the Google Places API is an authentication token required. You have to [create your own access key](https://developers.google.com/maps/documentation/javascript/get-api-key?hl=de). Create a `.env`-file in the `functions`-directory and insert the token like this:\n\n```\nGOOGLE_KEY=MY_ACCESS_TOKEN\n```\n\n### Firebase\nThe functions and the hosting can be simulated during development. Navigate into the `functions`-folder and open a terminal there.\n\nInstall packages:\n\n```\nnpm install\n```\n\n```\nnpm install firebase-tools -g\n```\n\nSetup firebase:\n\n```\nfirebase login\n```\n\n```\nfirebase use --add\n```\n\nStart simulation of functions:\n\n```\nnpm run serve\n```\n\nDeploy the project:\n\n```\nfirebase deploy\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkief%2Fangular-events-chatbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkief%2Fangular-events-chatbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkief%2Fangular-events-chatbot/lists"}