Built for streamlining development of Google Assistant Actions

Overview

rocket ship

Apprentice

Build Status PyPI version

Apprentice is a framework built for developing Google Actions via Dialogflow and Google Cloud (serverless) Functions.

Includes:

  • plug-and-play feel to get going quickly
  • basic Dialogflow API 2.0 response handling
  • local setup for quick iteration

Installation

pip install apprentice

Quickstart

We recommend you read the full tutorial here.

A Google Action project will consist of two things:

  1. Dialogflow Intent
  2. A webhook to satisfy your users intent

To generate a "Hello World" webhook, run:

$ apprentice init

This will create a file structure:

src/
    main.py
    requirements.txt

Run a local server with

$ apprentice run

and expose to localhost port via an https tunnel. Then add the url to the fulfillment webhook in Dialogflow.

For a more indepth example please see the tutorial I wrote here.

Deployment

Note

gcloud cli must be installed and authorized for the following command to work. If you wish to not have gcloud cli installed, you can copy the file contents via the gcloud function dashboard.

$ apprentice -f hello_world -s hello_world_agent -e hello_world

This will generate the command to execute a gcloud function deploy via the cli.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

GNU 3.0

Comments
  • Increase the usability of the Apprentice API

    Increase the usability of the Apprentice API

    This is what I could imagine the API for Apprentice looking like:

    
    from apprentice import Apprentice
    
    apr = Apprentice(__name__)
    
    ENTITIES = {
        "name": "History",
        "entries": [
            {
                "value": "history",
                "synonyms": [
                    "history",
                    "past event",
                    "the past",
                    "past"
                ]
            }, {
                "value": "birth",
                "synonyms": [
                    "birth",
                    "births",
                    "born"
                ]
            }
        ]
    }
    
    
    @apr.action(entities=['name'])
    def cool_fact_generator(*args, **kwargs):
        reply = _fact_response(apr.entity)
        return apr.make_repsonse(reply)
    
    opened by andrewgy8 1
  • Add suggestions

    Add suggestions

    When creating a response a user should be able to configure the view of suggestions.

    The resulting payload would look like:

    'payload': {
                    'google': {
                        'expect_user_response': False,
                        'is_ssml': True,
                        'permissions_request': None,
                        "richResponse": {
                            "items": [],
                            "suggestions": [],
                            "linkOutSuggestion": {}
                        }
                    }
                }
    
    opened by andrewgy8 0
  • .env with the Flask App path

    .env with the Flask App path

    For the local server to work as plug-and-play, it would be nice to have .env file that is read as a default to the installed main.py flask app. That way a user could execute:

    1. apprentice init
    2. apprentice run

    And have the local server running immediately.

    opened by andrewgy8 0
  • Fix triplicate deployment issue

    Fix triplicate deployment issue

    It seems that travis is trying to deploy the package with every version of python declared. For instance, https://travis-ci.com/andrewgy8/apprentice/builds/93792889

    The build succeeds with 3.7, but with 3.6 and 3.5, it fails. It shouldn't be deploying with all the python versions, only one.

    opened by andrewgy8 0
  • Allow user to define init directory name and function name

    Allow user to define init directory name and function name

    Be able to handle and argument such as:

    apprentice init --name=foo_bar

    and the output should be a direct called /foo_bar with a main.py file containing a foo_bar function.

    enhancement 
    opened by andrewgy8 0
Releases(v0.4.4)
Owner
Andrew Graham-Yooll
Software engineer with background in molecular biology
Andrew Graham-Yooll
This is a python wrapper for "the best api in the world"

This is a python wrapper for my api api_url = "https://api.dhravya.me/" This wrapper now has async support, its basically the same except it uses asyn

Dhravya Shah 3 Dec 21, 2021
TheTimeMachine - Weaponizing WaybackUrls for Recon, BugBounties , OSINT, Sensitive Endpoints and what not

The Time Machine - Weaponizing WaybackUrls for Recon, BugBounties , OSINT, Sensi

Anmol K Sachan 112 Dec 29, 2022
We propose the adversarial blur attack (ABA) against visual object tracking.

ABA We propose the adversarial blur attack (ABA) against visual object tracking. The ICCV link: https://arxiv.org/abs/2107.12085 and, https://openacce

Qing Guo 13 Dec 01, 2022
NMux is the version of the NMscript in termux

NMscript-termux-version Termux-Version NMux is the termux version of NMscript which is NMscript? NMscript is a simple script written in Python that he

cabeson sin z 5 Apr 23, 2022
An script where it logs in your instagram account and follows people and likes their posts

InstaFollower An script where it logs in your instagram account and follows people and likes their posts (uses the tags to fetch people) Requirements:

Bless 3 Nov 29, 2022
LyricsGenius: a Python client for the Genius.com API

LyricsGenius: a Python client for the Genius.com API lyricsgenius provides a simple interface to the song, artist, and lyrics data stored on Genius.co

KevinChunye 2 Jun 30, 2022
A management system designed for the employees of MIRAS (Art Gallery). It is used to sell/cancel tickets, book/cancel events and keeps track of all upcoming events.

Art-Galleria-Management-System Its a management system designed for the employees of MIRAS (Art Gallery). Backend : Python Frontend : Django Database

Areesha Tahir 8 Nov 30, 2022
Ubuntu env build; Nginx build; DB build;

Deploy 介绍 Deploy related scripts bitnami Dependencies Ubuntu openssl envsubst docker v18.06.3 docker-compose init base env upload https://gitlab-runn

Colin(liuji) 10 Dec 01, 2021
Heroku app to explore boardgame data

A Dashboard for the Board Game Geeks among us Link to Application As many Board Game Geeks like myself track the scores of board game matches I decide

Maarten Grootendorst 20 Nov 23, 2022
PyDottie is a version of Dottie.js written in Python 3.

PyDottie is a version of Dottie.js written in Python 3.

Jose Noriega 2 Nov 21, 2021
Sukoshi is a proof-of-concept Python implant that leverages the MQTT protocol for C2 and uses AWS IoT Core as infrastructure.

Sukoshi | 少し Overview Sukoshi is a proof-of-concept Python implant that leverages the MQTT protocol for C2 and uses AWS IoT Core as infrastructure. It

Steven Patterson 37 Oct 29, 2022
Official Python client for the MonkeyLearn API. Build and consume machine learning models for language processing from your Python apps.

MonkeyLearn API for Python Official Python client for the MonkeyLearn API. Build and run machine learning models for language processing from your Pyt

MonkeyLearn 157 Nov 22, 2022
Simplebot-tg - Telegram/DeltaChat Bridge with python

simplebot_tg Telegram/DeltaChat Bridge, is a plugin for https://github.com/simpl

Arián Díaz Cruz 1 Dec 30, 2021
Decrypt PSSE layer of PSM Games (on PC)

psse-decrypt Decrypt PSSE layer of PSM Games (on PC) Works on Unity and PSM games, and meets all requirements of: https://github.com/vita-nuova/bounti

Bluzume 32 Oct 11, 2022
Cytotron - A unique discord bot like never before. Add it to your server to keep it active, motiviated, and amazing!!

Cytotron - Take your server to the next level Most of the details are in the website. Go to https://cytotron-bot.gq for more information. If that link

LeviathanProgramming 6 Jun 13, 2021
Python SDK for IEX Cloud

iexfinance Python SDK for IEX Cloud. Architecture mirrors that of the IEX Cloud API (and its documentation). An easy-to-use toolkit to obtain data for

Addison Lynch 640 Jan 07, 2023
This is a Innexia Group Manager Bot with many features

⚡ Innexia ⚡ A Powerful, Smart And Simple Group Manager ... Written with AioGram , Pyrogram and Telethon... Available on Telegram as @Innexia ❤️ Suppor

TeamDeeCode 84 Jun 04, 2022
Your custom slash commands Discord bot!

Slashy - Your custom slash-commands bot Hey, I'm Slashy - your friendly neighborhood custom-command bot! The code for this bot exists because I'm like

Omar Zunic 8 Dec 20, 2022
Media Replay Engine (MRE) is a framework to build automated video clipping and replay (highlight) generation pipelines for live and video-on-demand content.

Media Replay Engine (MRE) is a framework for building automated video clipping and replay (highlight) generation pipelines using AWS services for live

Amazon Web Services - Labs 30 Nov 29, 2022
Messing around with GitHub API to look at omicron build times

gh-workflow-runs This is a very simple tool to dump out basic information about workflow runs for a GitHub repo. The structure is based on gh-subscrip

David Pacheco 1 Nov 30, 2021