Bot made with Microsoft Azure' cloud service

Overview

IttenWearBot

Autori:

  • Antonio Zizzari
  • Simone Giglio

IttenWearBot è un bot intelligente dotato di sofisticate tecniche di machile learning che aiuta gli utenti che lo utilizzano a vestirsi bene consigliando dei vestiti da acquistare secondo alcuni criteri.

Il bot ha molte funzionalità, che sono le seguenti:

  • Trova corrispondenza: Trovare un abbinamento basato su un capo d'abbigliamento già in tuo possesso, analizzarne il colore, e trovare l'abbinamento adatto.
  • Crea outfit: Nel caso in cui non si voglia specificare un capo d'abbigliamento, è possibile creare un outfit da zero scegliendo un colore di base dal quale partire.
  • Visualizza wishlist: Mostra i capi d'abbigliamento salvati in precedenza. Permette la visualizzazione e l'eliminazione dei capi all'interno della wishlist
  • Suggerisci luoghi foto: Suggerisce all'utente dei luoghi nei quali puoi scattare foto in base al meteo del luogo in cui si trova.

Architettura

Il bot è stato sviluppato in Python ed è stato pubblicato sul canale Telegram ed utilizza i seguenti servizi:

  • AppService: Per effettuare hosting dell'applicazione su cloud.
  • BotService: Per sviluppare, testare e pubblicare il bot in Azure.
  • Azure Cosmos DB: Per conservare i dati persistenti relativi agli utenti e alle wishlist associate.
  • LUIS: Per riconoscere ed interpretare la psicologia dei colori in crea outfit.
  • Azure Computer Vision: Per elaborare le immagini della funzione trova corrispondenza ed ottenere sia chi sono gli oggetti nella foto che il colore principale
  • AzureMaps: Quando viene suggerito un luogo incui fare le foto il servizio utilizza delle richieste https per ricevere informazioni sul posto inviato dall'utente

Prerequisiti

Installazione

Clonare la repository Github e installare in un ambiente virtuale i pacchetti richiesti con il comando:

pip install -r requirements.txt

Cosmos DB

CosmosDB è un database NoSQL offerto dai servizi Azure per lo sviluppo di app moderne, offrendo tempi di risposta veloci e scalabilità automatica. Cosmos DB mantiene json che tengono traccia del numero di mascherine totali indossate dagli utenti giorno per giorno. Utilizzo del portale di Azure:

  1. Creare una nuova risorsa utilizzando la barra di ricerca e cercare 'Azure Cosmos DB'.
  2. Specificare "serverless" per la voce "Capacity mode".
  3. Settare "Core(SQL)" per la voce "API".
  4. Confermare la creazione della risorsa.

LUIS

Per configurare LUIS – Language Understanding in modo semplice e veloce basta accedere al portale dedicato: https://www.luis.ai/.

Per istanziare una app LUIS si necessita di eseguire i seguenti passaggi:

  1. Accedere all’apposito portale, inserendo le credenziali di Azure.
  2. Cliccare sul bottone “New App” per creare una nuova istanza.
  3. Compilare la form con il nome dell’app, una breve descrizione (facoltativa) e selezionare la lingua target ed il gruppo di risorse in cui inserire l’applicazione.
  4. Una volta creata la risorsa, si possono creare gli intent, che sono utili ad interpretare il linguaggio comune e definire un’azione da intraprendere.
  5. Per creare un intent cliccare sul bottone “New” della scheda Intent ed inserire il nome per l’intent corrente.
  6. Una volta creato l’intent è possibile inserire delle frasi di esempio per addestrare il modello. Il seguente passo deve essere iterato per ogni frase di esempio da considerare.
  7. Dopo aver inserito tutte le frasi di cui si occorre, cliccare il bottone in alto a destra “Train” per addestrare il modello.
  8. Dopo aver addestrato il modello, cliccare sul bottone “Publish” e scegliere l’opzione “Production Slot”.
  9. Dopo aver eseguito la pubblicazione comparirà una notifica con un link che ci riporta all’endpoint url. Dopo aver cliccato sul link è possibile prelevare l’endpoint url che verrà utilizzato nell’applicazione del bot, l’app Id e le key associate alle risorse.
  10. Utilizzare i parametri del passo 9, per configurare la propria applicazione. Nel codice del bot inserire i parametri nel file config.py.

Computer Vision

Computer Vision può ottimizzare molti scenari di gestione delle risorse digitali. La gestione delle risorse digitali è il processo aziendale per l'organizzazione, l'archiviazione e il recupero di risorse multimediali elaborate e per la gestione dei diritti e delle autorizzazioni digitali. Utilizzo del portale di Azure:

  1. Creare una nuova risorsa utilizzando la barra di ricerca e cercare 'Computer Vision'.
  2. Specificare la tariffa preferita (F0 usata nel progetto).
  3. Confermare la creazione della risorsa.

Azure Maps

Azure Maps offre agli sviluppatori di tutti i settori potenti funzionalità geospaziali, combinate con i dati delle mappe più aggiornati. Mappe di Azure è disponibile sia per le applicazioni Web che per quelle per dispositivi mobili. Azure Mappe è un set di API REST conforme all'API Di Azure One. Utilizzo del portale di Azure:

  1. Creare una nuova risorsa utilizzando la barra di ricerca e cercare 'Azure Maps'.
  2. Specificare la tariffa preferita (Gen1 S1 usata nel progetto).
  3. Confermare la creazione della risorsa.

Servizio dell’applicazione bot

  1. Nel browser passare al portale di Azure.

  2. Nel pannello di sinistra selezionare Crea una nuova risorsa.

  3. Nel pannello di destra cercare i tipi di risorsa che includono la parola bot e scegliere Registrazione canali bot.

  4. Fare clic su Crea.

  5. Nel pannello Registrazione canali bot immettere le informazioni richieste.

  6. Fare clic su Creazione automatica password e ID app e selezionare Crea nuovo.

  7. Fare clic su Crea ID app nel portale di registrazione dell'app. Verrà aperta una nuova pagina.

  8. Nella pagina Registrazioni per l'app fare clic su Nuova registrazione in alto a sinistra.

  9. Immettere il nome dell'applicazione bot che si intende registrare, ad esempio IttenWearBot. Per ogni bot è necessario specificare un nome univoco.

  10. Per Tipi di account supportati selezionare Account in qualsiasi directory dell'organizzazione (qualsiasi directory di Azure AD - Multi-tenant) e account Microsoft personali (ad esempio, Skype, Xbox).

  11. Fare clic su Register. Al termine, Azure visualizza una pagina di panoramica per la registrazione dell'app.

  12. Copiare il valore di ID applicazione (client) e salvarlo in un file.

  13. Nel pannello di sinistra fai clic su Certificati e segreti.

    1. In Segreti client fare clic su Nuovo segreto client.
    2. Aggiungere una descrizione per identificare questo segreto rispetto ad altri che potrebbero essere necessari per creare per l'app.
    3. Impostare Scadenza su Mai.
    4. Scegliere Aggiungi.
    5. Copiare il nuovo segreto client e salvarlo in un file
  14. Tornare alla finestra Registrazione canali bot e copiare il valore di ID app e Segreto client rispettivamente nelle caselle ID app Microsoft e Password.

  15. Fare clic su OK.

  16. Fare infine clic su Crea.

Guida all'esecuzione

Il bot può essere testato in locale utilizzando Bot Framework Emulator e ngrok.

Local hosting

Testare il bot utilizzando Bot Framework Emulator

  1. Avviare il venv su PyCharm digistando
venv\Scripts\activate.bat
python app.py
  1. Avviare Bot Framework Emulator e selezionare 'Open Bot'.
  2. Inserire i campi richiesti:
    • Bot URL: http://localhost:3978/api/messages
    • Microsoft App ID: presente nel file config.py
    • Microsoft App password: presente nel file config.py

Testare il bot su Telegram

Creare un nuovo bot per Telegram e nella sezione Canali del servizio bot configurare il bot inserendo il token.

  1. Avviare ngrok
$ ./ngrok http -host-header=rewrite 3978
  1. Recarsi nella sezione Impostazioni del servizio bot ed inserire come endpoint di messaggistica l'indirizzo https generato da ngok.
  2. Testare il bot utilizzando Telegram.

Cloud Hosting

  1. Eseguire il deploy della web app utilizzando [](uesta guida](https://docs.microsoft.com/it-it/azure/bot-service/bot-builder-deploy-az-cli?view=azure-bot-service-4.0&tabs=python)
  2. Assicurarsi che l'endpoint del servizio bot sia corretto (se è stato modificato).
  3. A questo punto è possibile testare il bot utilizzando Telegram o la web chat su Azure.
Owner
Antonio Zizzari
Sono uno studente di Informatica presso l'Università degli Studi di Salerno.
Antonio Zizzari
Recommended AWS CDK project structure for Python applications

Recommended AWS CDK project structure for Python applications The project implements a user management backend component that uses Amazon API Gateway,

AWS Samples 110 Jan 06, 2023
Tools for Twitter

Tools for Twitter Data This is a start of a collection of tools to use for collecting data via the Twitter API. If you do not have a Twitter Developer

DiscoverText 36 Oct 13, 2022
Pluggable Telethon - Telegram UserBot

A stable pluggable Telegram userbot, based on Telethon.

Team Ultroid 2.3k Dec 30, 2022
This Wrapper is a Discum Copy With Addons, original one is made by Merubokkusu

Remaded Discum Its not Official Discum Wrapper ! This Wrapper is a Discum Copy With Addons, original one is made by Merubokkusu Authors @merubokkusu (

discum-remaded 8 Aug 09, 2022
🔎 Hunt down social media accounts by username across social networks

Hunt down social media accounts by username across social networks Installation | Usage | Docker Notes | Contributing Installation # clone the repo $

Sherlock 38.2k Jan 01, 2023
A simple discord bot that generates facts!

fact-bot A simple discord bot that generates facts! How to make a bot Go to https://discord.com/developers/applications Then click on 'New Application

1 Jan 05, 2022
A script that takes what you're listening too on Spotify and sets it as your Nertivia custom status.

nertivia-spotify-listening-status A script that takes what you're listening too on Spotify and sets it as your Nertivia custom status. setup Install r

Ben Tettmar 2 Feb 03, 2022
A maintained fork of Danny's discord.py

Nextcord A modern, easy-to-use, feature-rich, and async-ready API wrapper for Discord written in Python. Fork notice This is a fork of discord.py, whi

977 Jan 05, 2023
A Telegram Userbot to play Audio and Video songs / files in Telegram Voice Chats

TG-MusicPlayer A Telegram Userbot to play Audio and Video songs / files in Telegram Voice Chats. It's made with PyTgCalls and Pyrogram Requirements Py

4 Jul 30, 2022
API Basica per a synologys Active Backup For Buissiness

Synology Active Backup for Business API-NPP Informació Per executar el programa

Nil Pujol 0 May 13, 2022
Leveraged grid-trading bot using CCXT/CCXT Pro library in FTX exchange.

Leveraged-grid-trading-bot The code is designed to perform infinity grid trading strategy in FTX exchange. The basic trader named Gridtrader.py contro

Hao-Liang Wen 25 Oct 07, 2021
DIAL(Did I Alert Lambda?) is a centralised security misconfiguration detection framework which completely runs on AWS Managed services like AWS API Gateway, AWS Event Bridge & AWS Lambda

DIAL(Did I Alert Lambda?) is a centralised security misconfiguration detection framework which completely runs on AWS Managed services like AWS API Gateway, AWS Event Bridge & AWS Lambda

CRED 71 Dec 29, 2022
A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also follows the user.

GirlScript Winter of Contributing Twitter Bot A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also f

Pranay Gupta 9 Dec 15, 2022
Bearer API client for Python

Bearer Python Bearer Python client Installation pip install bearer Usage Get your Bearer Secret Key and integration id from the Dashboard and use the

Bearer 9 Oct 31, 2022
The fastest nuker on discord, Proxy support and more

About okuru nuker is a nuker for discord written in python, It uses methods such as threading and requests to ban faster and perform at higher speeds.

63 Dec 31, 2022
This Code is Property of Rehyann Saini. Feel Free to use this Project.

Email-Spammer Rehyann Saini in Collabration With Fe13 Productions This is an easy to use Dev Friendly Email spammer... #Important Things to know..! St

Rehyann Saini 1 Jan 14, 2022
Disqus API bindings for Python

disqus-python Let's start with installing the API: pip install disqus-python Use the API by instantiating it, and then calling the method through dott

DISQUS 163 Oct 14, 2022
Python script for download course from platzi.com

Platzi Downloader Tool Esta es una pequeña herramienta que hace mucho y que te ahorra una gran cantidad de trabajo a la hora de descargar cursos de Pl

Devil64-Dev 21 Sep 22, 2022
Linkvertise-bypass - Tools pour bypass les liens Linkvertise

Installation | Important | Discord 🌟 Comme Linkvertise bypass est gratuit, les

GalackQSM 3 Aug 31, 2022