Git Product home page Git Product logo

beckn-action-bot's Introduction

Description

beckn-action-bot is an open-source project built on Node.js, integrating OpenAI and the Beckn protocol to enable economic transactions across the Beckn open network using simple text inputs from users.

The primary objective of this AI assistant is to facilitate daily tasks such as ordering food, booking taxis, finding and navigating routes, scheduling appointments, and purchasing groceries, among others.

Key Features:

  1. Functions as a traditional chatbot by answering questions using GPT-3.5.
  2. Executes transactions on the Beckn open network.
  3. Retrieves routes from Google Maps and searches for items en route.
  4. Provides integration with WhatsApp and custom GPT models.
  5. Compatible with various chat interfaces.

How it works?

simple_booking.mp4
search_along_a_route.mp4

Installation

git clone https://github.com/beckn/beckn-action-bot
cd beckn-action-bot
npm i

Pre-requisites

  1. OpenAI access token : Obtain an open AI access token to use open AI LLMs. Here is a quick guide on how to do this.

  2. Twilio access token : The project uses twilio to send and receive messages from Whatsapp. You can skip this step if you plan to use the project in API only mode. You can read more about Twilio access token here.

  3. Google maps API key :The project uses Google maps for fetching route polylines. You will need the Google maps API key if you plan to use it

Usage

  1. Copy .env.sample to .env and set your environment variables. This is the step where you will need to set your access tokens as mentioned in the step above.

  2. To run the node server, run:

npm run dev # for debugging
npm run docker:dev # for docker

Steps to run tests

To run test cases, run:

npm run test # run all test cases
npm run test:unit # to run  unit tests

# To run test cases inside docker-container
npm run docker:test

Steps to run lint tests

We use eslint to check for linting errors. The rules for eslint are configured under .eslint.json file. Use the following command to run the eslint tests:

npm run lint

Steps to prettify

We use prettier to prettify the code. Run the following command to prettify:

npm run prettify

If you want to change the prettier rules, edit the .prettierrc.json file

Contributing

This is an open source project and everyone is welcome to chime in. Here is how you can contribute:

  1. Checkout the list of open issues here, and select the one that you are intersted in
  2. If you have any idea, suggestion or you discover an issue, create a discussion for it here
  3. To raise a PR: Fork the project
    1. Create your feature branch (git checkout -b feature/amazing-feature)
    2. Commit your changes (git commit -am 'Add some amazing feature')
    3. Push to the branch (git push origin feature/amazing-feature)
    4. Open a Pull Request
  4. Best practices:
    1. Follow the code structure
    2. Use test driven development
    3. Describe your PRs or issues in detail for the developers to understand. There are PR templates and issue templates configured in the project which can be used for understanding the structure.

License

This project is licensed under the MIT License - see the LICENSE file for details

Support

For support, join our Discord channel or open an issue.

beckn-action-bot's People

Contributors

mayurvir avatar shreyvishal avatar saurabhrai27 avatar vishi24 avatar

Stargazers

Adarsh Madhusoodanan avatar  avatar Sarang Galada avatar Anbarasi U avatar Shiv Singhal avatar

Watchers

Pramod Varma avatar Faiz Mohammed avatar  avatar Viraj avatar

beckn-action-bot's Issues

Deploy control-center on aplify

Description

Repo
Subdomain : controlcenter.ai.becknprotocol.io
Repo : https://github.com/beckn/beckn-bot-control-center

Goals

  • [Goal 1]
  • [Goal 2]
  • [Goal 3]
  • [Goal 4]
  • [Goal 5]

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Create a webhook to receive whatsapp messages

Description

Create a a webhook to receive messages from whatsapp and process them.

Goals

  • The webhook should receive a message from whatsapp and log it.
  • For given message the webhook should respond with : 'You said : ${message}`
  • The webhook should use a function call process_instruction() that does the logging and response
  • The webhook should be processed using Twilio
  • For all users, it should create a session and store them in persistent stores. Any user profile related information should be stored under the user session.

Expected Outcome

The webhook should use twillio to receive a message from whatsapp and respond back.

Acceptance Criteria

  • All goals should be met

Implementation Details

  1. Create a new service Actions.js responsible for all bot related functions.
  2. Add a function process_instruction() to this service to receive and instruction and respond back with a response
  3. Create a controller called Bot.js responsible for all bot endpoints and add the webhook function to is called : process_wa_webhook() that should use the process_instruction() function
  4. Add a route /webhooks connected to your controller function
  5. Process_intruction() function should be dump for now, we will add the functionality later in a separate ticket.

Mockups / Wireframes

NA

[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Postman collection for EV charging

Description

Create postman collection for the ev charging booking use case details are as below
base_url - https://mit-ps-bap-client.becknprotocol.io
bap_id - mit-ps-bap.becknprotocol.io
bap_uri - https://mit-ps-bap.becknprotocol.io

Further details for registry , gateway , bpp are here - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

It should have, search, select, init confirm, cancel, and status endpoints.

Postman collection should be published under https://github.com/beckn/beckn-action-bot/artefacts/postman_collection

The collection must use protocol server client of BAP as the base URL.

Goals

  • Postman collection pointing to BAP protocol server.

Expected Outcome

Postman collection for ev charging use case that points to BAP protocol server.

Acceptance Criteria

  • All the listed endpoints must be there and the postman collection must be tested with BAP protocol server without any local services running.

Add searchable 'details' to an item which allows aerching by multiple keywords

Description

[Provide a brief description of the feature, including why it is needed and what it will accomplish. You can skip any of Goals, Expected Outcome, Implementation Details, Mockups / Wireframes if they are irrelevant. Please note that this section of the ticket is suggestive & you can structure it as per your prerogative.]

Goals

  • [Goal 1]
  • [Goal 2]
  • [Goal 3]
  • [Goal 4]
  • [Goal 5]

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

AI bot catalog testing

Description

To ensure the AI bot functions effectively across different domains, such as Hotel, Retail, and Electric Vehicles (EV), Mayur to conduct a comprehensive catalog test for each domain.

This involves verifying that catalog entries accurately reflect the specific offerings and features relevant to each domain, ensuring seamless interaction and alignment with the bot's capabilities.

By testing catalog entries across diverse domains, we can validate the bot's ability to understand and respond appropriately to user queries within each context, thereby enhancing its overall performance and user experience.

Acceptance Criteria:

Testing should involve validating catalog entries through simulated user interactions or real-world scenarios to ensure that the AI bot performs as expected and meets user needs across different domains.

Identify collection of transactions and show a list if that collection is asked to be executed

Description

If user asks to make bookings for an itinerary, it should list down all the bookings to be made and ask which ones need to be booked

Goals

  • If a user asks to book/order a collection of things such as things for birthday, bookings for travel plan, AI should first list down the things that needs to be booked and then ask which one to book.
  • If a collection booking is in progress, AI should keep the list handy and after one booking is done, it show the list again and ask which one to book next.
  • If asked to stop the booking, it should stop the collection booking.

Expected Outcome

Create a continuous experience for user while making bookings for a travel plan so that user knows what to do next.

Acceptance Criteria

  • All goals must pass

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Update search intent based on domain

Description

There are different parameters required for different types of searches. AI should use the information available in session to fill the correct payload and create appropriate filters.

Goals

  • Filters for all domains should be correctly resolved if available as per the document here.
  • If any of the details are not available, it should not apply that filter. In any case, wrong or assumed values should not be used

Expected Outcome

AI should be able to correctly filter results based on user preferences and choices.

Acceptance Criteria

  • All goals must pass

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Example JSON for ticket booking use case

Description

Currently, there are no sandbox collection / JSON examples for the hotel booking use case.
Study ticket booking websites for national parks / museums and based on that create the JSON examples for ticket booking use case.y

Please push the examples to https://github.com/beckn/beckn-sandbox/tree/main/src under respective folder.

Goals

  • Json examples for ticket booking use case

Expected Outcome

JSON examples for the .ticket booking use case.

Acceptance Criteria

  • JSON examples should contain search, select, init confirm, and status endpoints.

Agent does not ask for billing details while initiating the order

Description

Billing details are required for initiating an order (In beckn, making the init call), however the current version of agent (the version after the rearchitecture) does not ask for the billing details.

Here is a screenshot of agent's message:
Screenshot 2024-04-17 at 8 21 11 PM

Here, the agent says : "Would you like to proceed and initiate the order for booking this hotel?". Whereas it should have asked for the billing details as they are not available in user's profile.

Checkout this PR for the full video.

Goals

  • If the user shares billing details, they should be stored in the session under profile in a relevant structure so that they can be used later. Remember that user might want to use different billing details so we may want to design for multiple billing details to be stored.
  • If the user has selected the order, the call to action should be based on whether or not user's billing details are available. If yes, it should ask for init else ask for init with billing details.
  • If the billing details are shared, they should be used and saved in the profile at the same time.
  • If the billing details are available in profile and hence not shared by the user, it should take the details from user profile and use them for init call.
  • If the user's billing details are available , it might be a good idea for agent to share the billing details with user for confirmation.

Expected Outcome

User should be asked for billing details when necessary and correct billing details should be used for each order.

Acceptance Criteria

  • If the user shares the billing details for the first time, they should be stored and used correctly
  • If the user has shared their billing details, they should not be asked to share them again.
  • If the user wants to change the billing details for the next order, they should be able to do so
  • In case billing details are not shared the first time, agent should ask for billing details instead of initiating the order with incorrect details.

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Catalog validation

Description

The catalogs are created and populated in the Strapi BPP instances and need validation that they are in line with the demo requirement.

https://mit-bpp-hotel.becknprotocol.io/admin
https://mit-bpp-tourism.becknprotocol.io/admin
https://mit-bpp-healthcare.becknprotocol.io/admin
https://mit-bpp-retail.becknprotocol.io/admin
https://mit-bpp-energy.becknprotocol.io/admin

Goals

  • Catalog validation for all 5 instances.

Expected Outcome

The catalogs are verified and do not need any further changes.

Acceptance Criteria

  • Catalogs validated as per the Demo requirements.

setup 1 registry instance using onix

Description

setup 1 registry instance using onix and map it to the domain https://mit-registry.becknprotocol.io/

Goals

  • spin up a new AWS EC2 instance
  • Ensure the nginx reverse proxy and is configured for http and https for the above mentioned domains
  • Ensure ssl certificate is setup for https configuration
  • install registry using onix and set the default credentials as root / root
  • Map the https://mit-registry.becknprotocol.io sub-domain
  • configure the following domains in the registry
    - hotel booking
    - retail
    - healthcare
    - ev charging
    - tourism
  • configure bap and bpp end points in the registry with appropriate domains
    - configure bap end point as wildcard, leave the domain empty
    - configure the 5 bpp end points with the respective domians

Expected Outcome

Registry is properly setup and bap and bpp end points are registered with the appropriate domains

Acceptance Criteria

  • spin up a new AWS EC2 instance
  • Ensure the nginx reverse proxy and is configured for http and https for the above mentioned domains
  • Ensure ssl certificate is setup for https configuration
  • install registry using onix and set the default credentials as root / root
  • Map the https://mit-registry.becknprotocol.io sub-domain
  • configure the following domains in the registry
    - hotel booking
    - retail
    - healthcare
    - ev charging
    - tourism
  • configure bap and bpp end points in the registry with appropriate domains
    - configure bap end point as wildcard, leave the domain empty
    - configure the 5 bpp end points with the respective domians

Implementation Details

  1. Spin up a new AWS EC2 instance
  2. install registry using the onix script
  3. install nginx and configure reverse proxy and map the domian https://mit-registry.becknprotocol.io for http and https configurations
  4. set the default credentials for the registry as root / root
  5. configure domains as mentioned above
  6. map the bap and bpp endpoints as mentioned above

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Tech Skills Needed:

Dev-ops

Postman collection enhancement

Description

Update the Postman collection, and add all the possible search combinations for all 4 domains that will have fulfillment, location, tag, and keywords-based search.

Goals

  • [ ]Update postman collection for all domains to include fulfillment, location, tag, and keywords-based search

Expected Outcome

Postman collection with the required requests.

Acceptance Criteria

  • All 4 domains with multiple types of search requests.

Generate accurate search requests based on conversation history using Instructor.js

Description

The beckn-action-bot currently uses a custom function to generate a structured search request by identifying preferences and booking information from the conversation history.

The get_beckn_request_from_text function in services/ai.js generates the Beckn message object which in the full request looks like this.

{
  "context": {
    ...
  },
  "message": {
    ...
  }
}

This function is highly unreliable and produces erroneous results in most use cases.

There are three types of search requests that can potentially be generated in the scope of this issue

Search by Item name

{
  "context": {
    "action": "search",
    "domain": "retail:1.1.0"
  },
  "message": {
    "intent": {
      "item": {
        "descriptor": {
          "name": "Raincoats"
        }
      }
    }
  }
}

Search by Location and Tags

{
  "context": {
    "action": "search",
    "domain": "uei:charging"
  },
  "message": {
    "intent": {
      "item": {
        "tags": [
          {
            "list": [
              {
                "descriptor": {
                  "code": "vehicle-type"
                },
                "value": "4-wheeler"
              },
              {
                "descriptor": {
                  "code": "connector-type"
                },
                "value": "CCS"
              }
            ]
          }
        ]
      },
      "fulfillment": {
        "stops": [
          {
            "location": {
              "gps": "44.428,-110.5885"
            }
          }
        ]
      }
    }
  }
}

Search by Location, Time and Tags

{
  "context": {
    "action": "search",
    "intent": "hospitality"
  },
  "message": {
    "intent": {
      "item": {
        "tags": [
          {
            "list": [
              {
                "descriptor": {
                  "code": "pet-friendly"
                },
                "value": "yes"
              },
              {
                "descriptor": {
                  "code": "ev-charging"
                },
                "value": "yes"
              },
              {
                "descriptor": {
                  "code": "accomodation-type"
                },
                "value": "campsite"
              }
            ]
          }
        ]
      },
      "fulfillment": {
        "stops": [
          {
            "type": "check-in",
            "location": {
              "gps": "44.428,-110.5885"
            },
            "time": {
              "timestamp": "2024-04-12"
            }
          },
          {
            "type": "check-out",
            "location": {
              "gps": "44.428,-110.5885"
            },
            "time": {
              "timestamp": "2024-04-14"
            }
          }
        ]
      }
    }
  }
}

Note: The "context" object is generated via a different function that is outside the scope of this issue

Goals

  • Create test case to simulate a conversation that leads to an itinerary. A sample test case can be found at : /beckn-action-bot/tests/apis/bot.test.js : ‘Test cases for trip planning workflow’
  • Update get_beckn_request_from_text function to use instructor.js library instead of custom prompt to map specific data points obtained from the conversation history into a structured search request

Expected Outcome

The get_beckn_request_from_text should accurately generate the above three requests based on the conversation.

Acceptance Criteria

  • The get_beckn_request_from_text should generate a structured "Search by item name" request based on a conversation involving a retail purchase
  • The get_beckn_request_from_text should generate a structured "Search by location and tags" request based on a conversation involving discovering EV charging
  • The get_beckn_request_from_text should generate a structured "Search by location, time, and tags" request based on a conversation involving discovering hotels

Implementation Details

  • The application uses a NodeJS backend
  • It is expected to use Instructor.js

MIT Catalog feedback - Review with Mayur on April 10

Description

For the upcoming MIT demo on April 11, 80+ Catalogs were created for three domains: Hotel, Retail and EV. These were reviewed with Mayur on April 10, 2024. As the AI chatbot was showing error due to 'provider uri' added in the catalogs, Mayur suggested to remove 'provider URI' from all catalogs.

Feedbacks received

1. Remove 'provider URI' from catalogs
2. Bank details to be updated with American context 
3. Logo URL - Mayur to confirm if its to be removed from catalogs
4. How search is happening - based on Fulfillment location/item location - Vishwa to check with Abhishek
5. Removed 'Size Type' from Media - to resolve protocol server issue (PS not able to process that)
7. 'Tags' and 'Categories' - Mayur to confirm if this need to be fixed
8. Validate Provider location ID = Item-fulfillment  location id - match with  Provider location ID

Team to work on these issues

Add function to `get_beckn_action_from_text()`

Description

Add a function to get beckn payload from a given instruction.

Goals

  • If a beckn based instruction is given, it should translate it into a beckn payload
  • The function should work for all possible actions for a BAP
  • The function to return with questions if any of the fields required by the api are missing in context
  • The function should use user profile from user session as context for resolution.
  • The function should use the entire conversation for a given search context
  • The function should use spec version 1.1.0

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Create a control center

Description

Create a web page for control center that allows for 3 primary actions.

Goals

  • [Goal 1]
  • [Goal 2]
  • [Goal 3]
  • [Goal 4]
  • [Goal 5]

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

A web page for control centre with three buttons :

Trigger a Blizzard

When the user “triggers” a wizard, it must call an api on BSP with a message to the user’s number. “There is a blizzard in Wyoming, and all roads to the Casper region are blocked. If you have not reached your stay at Casper, please let me know so that I can look for alternate arrangements”.

💡Note
Technically this should be handled using policy endpoints where weather, calamities information can be published. For now, it will be handled using a simulation.

Cancel booking

When a web user clicks on “Cancel booking!”, it should make an API call to get the latest booking made by the user's number at Cody and cancel that booking. If the booking is not found, it should be handled gracefully. If the cancellation is successful, it should send a notification to Whatsapp.

Add a new Museum

When a web user clicks on “Add a museum” on route, it should make an API call to BPP adapter to create a new item of interest with prefilled details. On bot side, when user location is received, a new museum will be discovered and suggested to the user, if they are within 50 KM radius.

Mockups / Wireframes

Image


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Setup base code

Description

Add base code with structure for controllers. services, scripts, tests, docker, github workflows, lint checks.

Goals

  • Working express service with boiler plate code setup.

Expected Outcome

Working express service with boiler plate code.

Acceptance Criteria

All goals must be passed.

Implementation Details

  1. Fork the code from beckn-ai repository and cleanup the code
  2. Make sure any temporary code is removed

Mockups / Wireframes

NA

[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: Whatsapp bap]

Project Name

[Project Name: Beckn AI]

Organization Name:

[Beckn]

Domain

[]

Tech Skills Needed:

[nodejs, whatsapp, beckn, openai]

Complexity

[Medium]

Category

[PoC]

Sub Category

[Beckend]

Enhance Strapi to accommodate ticket booking use case

Description

Once the JSON examples are available for Hotel use case, the strapi Plugin needs to be tested / enhanced so that it works seamlessly.

Goals

  • Strapi plugin to work for the hotel usecase as per the JSON shared by the specs team.

Expected Outcome

Strapi with hotel usecase support.

Acceptance Criteria

  • Strapi should be able to perform search select init confirm cancel and status.

Postman collection for ticket use case

Description

Create postman collection for the ticket booking use case details are as below
base_url - https://mit-ps-bap-client.becknprotocol.io
bap_id - mit-ps-bap.becknprotocol.io
bap_uri - https://mit-ps-bap.becknprotocol.io

Further details for registry , gateway , bpp are here - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

It should have, search, select, init confirm, cancel, and status endpoints.

Postman collection should be published under https://github.com/beckn/beckn-action-bot/artefacts/postman_collection

Link to the catalogs page - https://fide-official.atlassian.net/wiki/spaces/DP/pages/292356099/Tourism+Ticket+Booking+Catalog

The collection must use protocol server client of BAP as the base URL.

Goals

  • Postman collection pointing to BAP protocol server.

Expected Outcome

Postman collection for ticket use case that points to BAP protocol server.

Acceptance Criteria

  • All the listed endpoints must be there and the postman collection must be tested with BAP protocol server without any local services running.

Agent does not share the order id once the order is confirmed

Description

Agent should always the order id once the order is confirmed. In the current version, its shares the placeholder of order id or completely ignores is which is incorrect.

Screenshot 2024-04-17 at 8 31 02 PM

Checkout the full video on this PR.

Goals

  • When an order is confirmed, it should always share an order id

Expected Outcome

The correct order id should be shared after an order has been confirmed.

Acceptance Criteria

  • If an order is successfully placed, the order id should be shared
  • If the order fails to confirm, it should not show an incorrect order id.

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Example JSON for hotel use case

Description

Currently, there are no sandbox collection / JSON examples for the hotel booking use case.
Study hotel booking websites and based on that create the JSON examples for hotel booking use case.

Please push the examples to https://github.com/beckn/beckn-sandbox/tree/main/src under respective folder.

Goals

  • Json examples for hotel booking use case

Expected Outcome

JSON examples for the hotel booking use case.

Acceptance Criteria

  • JSON examples should contain search, select, init confirm, and status endpoints.

Add status messages while request is processing for Whatsapp

Description

If the conversation is happening over Whatsapp, there is no way for the user to figure out that the agent is doing something when an action is being processed. Checkout this video for reference:

simple_booking.mp4

We need to show status messages when a request to perform beckn action has been received and is being processed. The messages are already given in the language.json file.

Goals

  • Send status message under perform_beckn_action when an action has been received
  • Send status message under perform_beckn_action when an api call is finished and a successful response is received.

Expected Outcome

The messages shown in this image need to be added when an action is in process. The messages should be shown in italics.

Screenshot 2024-04-17 at 8 11 17 PM

Acceptance Criteria

  • When an action to search , select, init or confirm is triggered, agent should send status messages as the request progresses as shown in the image.
  • If the agent performs retries, it should not send multiple messages of the same type.

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Strapi plugin deployment and Data model update

Description

After the changes are made for the search functionality on Tag, keyword, and location is done. The enhanced Strapi plugin needs to be deployed on all instances.
Update the data model in all the instances.
Validate the deployment using Postman collection.

Goals

  • Strapi plugin deployment on all instances.
  • Data model enhancement on all instances.

Expected Outcome

Updated strapi plugin and data model on all instances of Strapi.

Acceptance Criteria

  • Updated data model on all instances.
  • Update strapi plugin on all instances.
  • Validate the deployment using postman collection.
  • Validate that data model is reflected.

Add user profile

Description

For each session, created between the Whatsapp bot and a number, it should store the user profile such as name, billing address, preferences (such as dietary, family members, vehicle type,) which can be re-used for the in other contexts such as init calls. etc.

Goals

  • Extract relevant profile information as key value pairs and store it under session under profile
  • clear_profile action to be added to clear profile if required.
  • profile should not be flushed unless explicitly asked to clear the profile
  • Profile as a context should be passed for preparing payload or responding to a query.
  • During payload preparation such as discovery and init, it should use profile information. For e.g. for discovery it should apply the necessary filters and for init it should use the billing details if available
  • Required fields should be asked for if not retrieved from profile

Expected Outcome

User should not be required any profile information repeatedly in a conversation.

Acceptance Criteria

  • All goals must pass

Implementation Details

  1. Add a profile key to session that can store the profile information
  2. Add a function to extract_profile_from_message(message, context) where the context is last message (text or formatted text based on timestamp)
  3. Add profile as a context to get_ai_response and get_beckn_request functions

Mockups / Wireframes

Image


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Obtain a twilio production account

Description

Obtain a production account for twilio and setup company card for payments.

Goals

  • Production account to be setup
  • Company billing details to be updated
  • Company's payment details to be added
  • Account credentials to be updated on confluence.
  • Testing to be done.

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Add business logic to `process_instruction()` function.

Description

Add business logic to process_instruction() function and maintain session for a given user.

Goals

  • If a plain text is passed, the function should return an answer generated from open AI
  • If a valid action is passed, the function should take that action and return the response for that action in valid human readable format
  • The logic should be tested with /webhook endpoint
  • End to end integrations tests for all 5 domains to be added
  • Load test to be added (to be skipped in normal tests), which can be run through a separate script npm run test:load to test the integration tests at least 50 times

Expected Outcome

The function should be able to return with an answer or act on the instruction based on given input.

Acceptance Criteria

  • All goals must be achieved

Implementation Details

process_instruction() should be able to receive a plain text input and generate a response based on following criteria:

  • Pass the instruction to get_beckn_request_from_text()
  • If the response.status of get_beckn_request_from_text() is false, return the response.message
  • If the response.status of get_beckn_request_from_text() is true, pass the response.data to call_api() function to make the api call and get a response
  • If the response from call_api() is a valid response, translate the JSON back to text using get_text_from_json() function to get the final text response
  • Write test cases for each of the goals.

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Clone MIT Mumbai network to North Virginia

Description

Make copy of all the 13 instances set up for the MIT demo in the North Virginia region.
The existing network in the Mumbai region will remain intact no changes should be made.
All the domains will have -nv at the end.

This migration will include database also for the Strapi.

Once the migration is done update the details in below sheet under north virginia infra sheet - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

Instances used by Mayur also needs to be migrated to the North Virginia region.
@mayurvir , please provide the details.

Detail of 3 instances

Instances Overview

Sr.No. Instance Name Instance ID DNS
1 MIT-bpp-hotel i-0dde43e2cd69a2f13 https://mit-bpp-hotel.becknprotocol.io/admin
2 MIT-bpp-tourism i-035ea722aaba3b693 https://mit-bpp-tourism.becknprotocol.io/admin
3 MIT-bpp-healthcare i-0326b93dea8a2d1ad https://mit-bpp-healthcare.becknprotocol.io/admin
4 MIT-bpp-retail i-0f87e7d81ef3f365c https://mit-bpp-retail.becknprotocol.io/admin
5 MIT-bpp-energy i-092c1d81213f68f83 https://mit-bpp-energy.becknprotocol.io/admin
6 MIT-ps-hotel i-0b481d1a3e955d49e https://mit-ps-hotel.becknprotocol.io
https://mit-ps-hotel-client.becknprotocol.io
7 MIT-ps-tourism i-05cc546c5853fe243 https://mit-ps-tourism.becknprotocol.io
https://mit-ps-tourism-client.becknprotocol.io
8 MIT-ps-healthcare i-01a16ec8018074c9c https://mit-ps-healthcare.becknprotocol.io
https://mit-ps-healthcare-client.becknprotocol.io
9 MIT-ps-retail i-02236bb06ebd59c63 https://mit-ps-retail.becknprotocol.io
https://mit-ps-retail-client.becknprotocol.io
10 MIT-ps-energy i-0d32a362932a971d0 https://mit-ps-energy.becknprotocol.io
https://mit-ps-energy-client.becknprotocol.io
11 MIT-gateway i-0958be2efa67542c6 https://mit-gateway.becknprotocol.io
12 MIT-regitry i-0249fe186ceafcf8c https://registry-mit.becknprotocol.io
13 MIT-bap i-0290c72d45a6a4a68 https://mit-ps-bap.becknprotocol.io
https://mit-ps-bap-client.becknprotocol.io

Goals

  • Migration of MIT network and AI application setup in Mumbai region to North Virginia region.

Expected Outcome

Working network in North Virginia region.

Acceptance Criteria

  • All 13 instances clone along with the DB
  • AI application instance also cloned to North Virginia region
  • The new network should work as existing network.

Bug: strapi returns providers of different country when searched with GPS location of yellowstone national park

Description

Location filters not getting applied in BPP

Goals

  • Location based filtering should happen appropriately
  • Location based filtering should work correctly for all domains
  • RCA of issue to be created

Expected Outcome

All goals must pass

Acceptance Criteria

All goals must pass.

Implementation Details

My curl:

curl --location 'https://mit-ps-bap-client.becknprotocol.io/search' \
--header 'Content-Type: application/json' \
--data '{
    "context": {
        "domain": "uei:charging",
        "transaction_id": "a9aaecca-10b7-4d19-b640-b047a7c62196",
        "message_id": "8aafd2f5-8ee8-4b22-8f15-477337a8ad3d",
        "action": "search",
        "timestamp": "2023-05-25T05:23:03.443Z",
        "version": "1.1.0",
        "bap_uri": "https://mit-ps-bap.becknprotocol.io",
        "bap_id": "mit-ps-bap.becknprotocol.io",
        "ttl": "PT10M"
    },
    "message": {
        "intent": {
            "provider": {
                "locations": [
                    {
                        "circle": {
                            "gps": "44.4280, -110.584389",
                            "radius": {
                                "type": "CONSTANT",
                                "value": "30",
                                "unit": "miles"
                            }
                        }
                    }
                ]

            }

            }
        }
    }'

Response:

Image

If you notice, the provider is from Bangalore.

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

AI bot UAT

Description

Viraj to conduct end-to-end testing of the AI bot to verify the functionality of all intended flows.

This includes testing various user interactions to ensure the bot responds accurately and appropriately in different scenarios.
Screenshots or recordings to be provided as proof of completion, showcasing successful navigation through the bot and validation of expected outcomes across all tested flows.

Acceptance Criteria

Comprehensive Testing: Viraj must test all intended user flows within the AI bot, covering various scenarios and interactions to ensure thorough validation of functionality.

Accuracy: The bot's responses should be accurate and relevant to user queries, reflecting a deep understanding of the provided information and context.

Consistency: The bot's behavior should remain consistent across different flows and interactions, maintaining uniformity in responses and user experience.

Validation of Intended Flows: Viraj should verify that all intended flows, features, and functionalities specified for the bot are working as expected without any errors or deviations.

Documentation of Testing: Viraj must document the testing process, including any issues encountered, steps taken to reproduce them, and resolutions implemented, ensuring comprehensive record-keeping for future reference.

Proof of Completion: Screenshots or recordings should be provided as evidence of the testing process, demonstrating successful navigation through the bot and validation of expected outcomes across all tested flows.

Postman collection for retail use case

Description

This postman collection will be for retail use case, purchasing pet food (Dog food).
Create postman collection for the retail booking use case details are as below
base_url - https://mit-ps-bap-client.becknprotocol.io
bap_id - mit-ps-bap.becknprotocol.io
bap_uri - https://mit-ps-bap.becknprotocol.io

Further details for registry , gateway , bpp are here - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

It should have, search, select, init confirm, cancel, and status endpoints.

Postman collection should be published under https://github.com/beckn/beckn-action-bot/artefacts/postman_collection

The collection must use protocol server client of BAP as the base URL.

Goals

  • Postman collection pointing to BAP protocol server.

Expected Outcome

Postman collection for retail use case that points to BAP protocol server.

Acceptance Criteria

  • All the listed endpoints must be there and the postman collection must be tested with BAP protocol server without any local services running.

Setup 5 BPP protocol server instances

Description

Setup 5 BPP protocol server instances and configure and connect to the strapi BPP instances using ONIX script

  1. BPP client
  2. BPP Network

Goals

  • setup 5 AWS EC2 instances
  • setup the 5 bpp protocol server instances using ONIX script on an AWS EC2 and map the following sub-domians
    • BPP-PS-Network
      a. mit-ps-hotel.becknprotocol.io
      b. mit-ps-tourism.becknprotocol.io
      c. mit-ps-healthcare.becknprotocol.io
      d. mit-ps-energy.becknprotocol.io
      e. mit-ps-retail.becknprotocol.io
    • BPP-PS-Client
      a. mit-ps-client-hotel.becknprotocol.io
      b. mit-ps-client-tourism.becknprotocol.io
      c. mit-ps-client-healthcare.becknprotocol.io
      d. mit-ps-client-energy.becknprotocol.io
      e. mit-ps-clientretail.becknprotocol.io
  • setup the nginx reverse proxy and configure for http and https for the above mentioned domains
  • configure ssl certificate for https configuration
  • configure the default.yaml file for both client and network and ensure it is pointed correctly to the right registry
  • generate the public and private key and configured in the default.yaml and registry
  • connect each of the protocol server bpp to the respective strapi instances

Expected Outcome

All 5 AWS EC2 instances needs to be setup, protocol server configured, connected to registry and able to talk to strapi bpp instances

Acceptance Criteria

  1. Setup 5 AWS EC2 instances:

    • Ensure that 5 EC2 instances are provisioned on AWS.
    • Verify that each instance is accessible and operational.
  2. Setup the 5 BPP protocol server instances using ONIX script on an AWS EC2 and map the following sub-domains:

    • Confirm that 5 BPP protocol server instances are deployed using the ONIX script.
    • Validate that each server instance is running and accessible.
    • Verify that the specified sub-domains are correctly mapped to each respective instance.
  3. Setup the nginx reverse proxy and configure for HTTP and HTTPS for the above mentioned domains:

    • Ensure that nginx reverse proxy is installed and configured on the designated server.
    • Confirm that HTTP and HTTPS configurations are set up for all mentioned domains.
    • Validate that nginx is routing traffic correctly to the corresponding protocol server instances.
  4. Configure SSL certificate for HTTPS configuration:

    • Confirm that SSL certificate is obtained and configured for each domain.
    • Verify that HTTPS connections are established securely using the configured SSL certificate.
  5. Configure the default.yaml file for both client and network and ensure it is pointed correctly to the right registry:

    • Confirm that default.yaml files are properly configured for both client and network instances.
    • Validate that the configurations are pointing to the correct registry for each instance.
  6. Generate the public and private keys and configured in the default.yaml and registry:

    • Ensure that public and private keys are generated securely.
    • Confirm that keys are correctly configured in the default.yaml files and registry settings.
  7. Connect each of the protocol server BPP to the respective Strapi instances:

    • Validate that each protocol server instance is connected to the respective Strapi instance.
    • Confirm bidirectional communication between protocol server instances and Strapi instances.

Implementation Details

  1. Setup 5 AWS EC2 instances:

    • Log in to the AWS Management Console.
    • Navigate to the EC2 dashboard.
    • Launch 5 EC2 instances, selecting the appropriate instance type, networking settings, and storage options.
    • Configure security groups to allow necessary inbound and outbound traffic.
    • Optionally, assign Elastic IPs to ensure static addressing if needed.
  2. Setup the 5 BPP protocol server instances using ONIX script on an AWS EC2 and map the following sub-domains:

    • SSH into each EC2 instance.
    • Execute the ONIX script to set up the BPP protocol server.
    • Configure DNS records to map the specified sub-domains to the public IP addresses of the respective EC2 instances.
  3. Setup the nginx reverse proxy and configure for HTTP and HTTPS for the above mentioned domains:

    • Install Nginx on a separate EC2 instance or one of the existing ones.
    • Configure Nginx as a reverse proxy to forward requests to the BPP protocol server instances.
    • Set up HTTP and HTTPS server blocks in Nginx configuration for each sub-domain.
    • Configure SSL certificates for HTTPS (you can use Let's Encrypt for free certificates).
  4. Configure SSL certificate for HTTPS configuration:

    • Obtain SSL certificates from a Certificate Authority (CA) like Let's Encrypt.
    • Install the SSL certificates on the Nginx server.
    • Configure Nginx to use the SSL certificates for HTTPS connections.
  5. Configure the default.yaml file for both client and network and ensure it is pointed correctly to the right registry:

    • Locate and edit the default.yaml files on the BPP protocol server instances.
    • Update the configuration to point to the correct registry URL and other necessary settings.
  6. Generate the public and private keys and configured in the default.yaml and registry:

    • Generate public and private key pairs using a tool like OpenSSL.
    • Update the default.yaml files on the protocol server instances to include the generated keys.
    • Configure the registry to use the appropriate keys for authentication.
  7. Connect each of the protocol server BPP to the respective Strapi instances:

    • Ensure that Strapi instances are accessible and running.
    • Update the configurations on each BPP protocol server to connect to the correct Strapi instance.
    • Test the connection to verify bidirectional communication between BPP servers and Strapi instances

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Tech Skills Needed:

Dev-ops

Setup 5 strapi bpp instances using ONIX script

Description

Setup the 5 strapi bpp instances in AWS EC2 using ONIX script

Goals

  1. Setup the 5 strapi bpp instances in AWS EC2 only using ONIX Script and point the EC2 instances to below sub-domains
    [ ] mit-bpp-hotel.becknprotocol.io
    [ ] mit-bpp-tourism.becknprotocol.io
    [ ] mit-bpp-healthcare.becknprotocol.io
    [ ] mit-bpp-energy.becknprotocol.io
    [ ] mit-bpp-retail.becknprotocol.io

  2. Ensure the nginx reverse proxy and is configured for http and https for the above mentioned domains

  3. Ensure ssl certificate is setup for https configuration

  4. Install strapi on all 5 instances
    a. configure bpp adapter plugin

  5. setup master account for all strapi instances

Expected Outcome

  1. Setup 5 strapi AWS instances on AWS EC2
  2. nginx reverse proxy is setup with domain mapping for http and https configuration
  3. strapi is installed on all EC2 instances
  4. Ensure ssl certificates are installed.
  5. Setup super admin credentials

Acceptance Criteria

  • Verify and ensure that strapi bpp is accessible for the following sub-domians
    - mit-bpp-hotel.becknprotocol.io
    - mit-bpp-tourism.becknprotocol.io
    - mit-bpp-healthcare.becknprotocol.io
    - mit-bpp-energy.becknprotocol.io
    - mit-bpp-retail.becknprotocol.io
  • Setup super admin credentials
  • Once strapi is setup, verify each account by logging in to the strapi account using the super admin credentials, ensure everything is working as expected

Implementation Details

  1. Setup 5 strapi AWS instances on AWS EC2
  2. nginx reverse proxy is setup with domain mapping for http and https configuration
  3. strapi is installed on all EC2 instances
  4. Ensure ssl certificates are installed.
  5. setup super admin credentials

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Tech Skills Needed:

Dev-ops

Add user sessions for a given number under webhook handler

Description

For any conversation happening with a user, it should be stored under a session for future context.

Goals

  • If a user performs transactions in sequence i.e. search > select > init > confirm

Expected Outcome

[Describe in detail what the final product or result should look like and how it should behave.]

Acceptance Criteria

  • [Criteria 1]
  • [Criteria 2]
  • [Criteria 3]
  • [Criteria 4]
  • [Criteria 5]

Implementation Details

  1. We should have functions to create_session(), update_session(), get_session() in a DB service.
  2. Once a user message is received, check if the session exists.
  3. If the session does not exist, create a session
  4. If the session does exist, update the session
  5. We need to store the session in following manner:
{
  "profile_context" : [],
  "latest_search_context" : []
}

Here, every message received by user should be analysed if it has any profile information and that should be stored under profile.
Every time a user does a search, it should reset the latest_search_context and add all subsequent messages to this array.

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Add function to call an api

Description

Add a function to call an api using url, payload, method and headers and return response.

Goals

  • Given a set of url, payload, method and headers, the function should be able to make api call and return the response.
  • IN case of errors it should gracefully handle

Expected Outcome

The function should be able to make apis calls and return response.

Acceptance Criteria

  • All goals must pass

Implementation Details

This method is already implemented in the beckn-ai codebase and should be taken from there. The function should be kept under Actions.jsservice.

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Add static map images for selected routes

Description

Note : This issue applies to this ongoing PR. It should be taken only once this PR has been merged to main.

In the new structure that has been added in the PR given above, the functionality to show static map image with the selected route that is currently functional in the main branch was removed. This was to ensure that the base framework works properly.

Once the ongoing PR has been merged, this functionality needs to be added back to the agent but with some improvements. Here is what is required:

  1. Static maps to be shared differently for whatsapp interactions and normal API interactions. For whatsapp interactions, it should use twilio media to send the image url while for regular APIs, it should send the url directly (for e.g. in case of custom GPT)
  2. Static map images to be shared on the following occasions:
    2.1. When list of routes is asked, it should show all routes in different colors
    2.2. When a route is selected, it should show the selected route along with a link to navigate
    2.3. If a search along the route is triggered, it should show items on the map with map markers

Goals

  • When a get_routes function is triggered, return the static image with all the paths marked in different colors
  • When a select_route function is triggered, return the static image with the selected path and navigation link
  • When a perform_beckn_action is triggered with search along the route, return the static image with providers marked on the map

Expected Outcome

The /webhook endpoint should accurately return static image url in case of both whatsapp and non-whatsapp based interaction for each of the given cases.

Example of how it should look from the old implementation:
Screenshot 2024-04-18 at 1 56 17 PM

Acceptance Criteria

  • When a user asks to show routes, it should list down the routes along with a static image that shows all the routes in different colors
  • When a user selects a route, it should return the image of selected route and a link to navigate
  • When a user searches along a route, it should return an image of selected route and items marked on the static image.
  • When a user does not search along a route, it should not return the static image

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Postman collection for Hotel booking

Description

Create postman collection for the hotel booking use case details are as below
base_url - https://mit-ps-bap-client.becknprotocol.io
bap_id - mit-ps-bap.becknprotocol.io
bap_uri - https://mit-ps-bap.becknprotocol.io

Further details for registry , gateway , bpp are here - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

It should have, search, select, init confirm, cancel, and status endpoints.

Postman collection should be published under https://github.com/beckn/beckn-action-bot/artefacts/postman_collection

Link to catalogs sheet: https://fide-official.atlassian.net/wiki/spaces/DP/pages/293208066/Hotel+Catalog

The collection must use protocol server client of BAP as the base URL.

Goals

  • Postman collection pointing to BAP protocol server.

Expected Outcome

Postman collection for hotel use case that points to BAP protocol server.

Acceptance Criteria

  • All the listed endpoints must be there and the postman collection must be tested with BAP protocol server without any local services running.

Setup DNS Entries

Description

Set up the following DNS Entries in AWS

STRAPI-BPP
mit-bpp-hotel.becknprotocol.io
mit-bpp-tourism.becknprotocol.io
mit-bpp-healthcare.becknprotocol.io
mit-bpp-energy.becknprotocol.io
mit-bpp-retail.becknprotocol.io

BPP-PS-Network
mit-ps-hotel.becknprotocol.io
mit-ps-tourism.becknprotocol.io
mit-ps-healthcare.becknprotocol.io
mit-ps-energy.becknprotocol.io
mit-ps-retail.becknprotocol.io

BPP-PS-Client
mit-ps-hotel-client.becknprotocol.io
mit-ps-tourism-client.becknprotocol.io
mit-ps-healthcare-client.becknprotocol.io
mit-ps-energy-client.becknprotocol.io
mit-ps-retail-client.becknprotocol.io

REGISTRY
mit-registry.becknprotocol.io

GATEWAY
mit-gateway.becknprotocol.io

BAP-PS-Client
mit-bap.becknprotocol.io

BAP-PS-Network
mit-bap-network.becknprotocol.io

Goals

  • Create DNS Entries for 5 strapi bpp's
  • Create DNS entries for 5 bpp protocol servers
  • Create DNS entries for gateway
  • Create DNS entries for registry
  • Create DNS entries for BAP protocol server client

Expected Outcome

DNS entries should be created and mapped to respective IP's

Acceptance Criteria

  • Create DNS Entries for 5 strapi bpp's and ensure it working
  • Create DNS entries for 5 bpp protocol servers and ensure its working
  • Create DNS entries for gateway and ensure its working
  • Create DNS entries for registry and ensure its working
  • Create DNS entries for BAP protocol server client and ensure its working

Implementation Details

DNS entries using AWS 53 route

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Tech Skills Needed:

Dev-ops

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Dev-ops

Sub Category

DNS entry

Update README.md based on the new structure of agent and steps to contribute

Description

The current version of README file is outdated and does not include steps on how to use the project and how to contribute. It needs to have the following sections

  1. Project description :
    Provide a concise description of what this project does. Include the main features, the problem it solves, and why this project is useful. Aim to capture the attention of someone who might be interested in contributing, using, or learning more about your project. Include some running videos or gifs about project in action.

  2. ** Installation ** :
    Include detailed step-by-step instructions on how to set up and run your project locally. This could be through cloning the repository or steps to run tests locally. Make sure to list any prerequisites, like other software or libraries needed.

  3. ** Usage **:
    Showcase how to use your project with simple examples or code snippets. If applicable, include screenshots or gifs to help understand the project's functionality.

  4. ** Contributing ** :
    Encourage other developers to contribute to your project. Include instructions on how they can submit their contributions. Outline the process they should follow to propose changes and how they should test these changes.

  • Fork the project
  • Create your feature branch (git checkout -b feature/amazing-feature)
  • Commit your changes (git commit -am 'Add some amazing feature')
  • Push to the branch (git push origin feature/amazing-feature)
  • Open a Pull Request
  • Best practices
  1. ** License ** :
    Specify the license under which your project is made available. Include a link to the license file and any additional licensing information.

  2. ** Support **:
    Provide contact information or instructions for users who need help or support with your project. This could be a link to an issue tracker, an email address, or a chat channel.

For support, join our Discord channel or open an issue.

  1. ** Roadmap **:
    If your project is evolving, include a roadmap of expected future features and improvements.

  2. Authors and Acknowledgment :
    Credit the contributors who helped build, maintain, or significantly improve the project.

  3. FAQs
    Include a section for frequently asked questions to help users solve common problems they might encounter.

Goals

  • Create an updated README.md file with the given structure

Expected Outcome

  • The new README.md file should be in the given structure with details as highlighted

Acceptance Criteria

  • Any new developer should be able to read the new README.md file and setup the code locally without any support
  • Contributors should be able to understand the project on their own and pickup the issues from issue tracker to start contributing.
  • Contributors should be able to clearly understand the starting point for making contributions
  • Contributors should be able to ask ask questions, raise PR, do code reviews, engage in discord discussions on their own based on the information provided in the README file

Implementation Details

Details given in the description

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Add support for Custom GPT

Description

While the current version of agent supports API usage by any form of UI including custom GPT. The agent needs to be tested with custom GPT while ensuring that no extra open ai calls are happening such as formatting json responses etc. as that gets done by the GPT itself.

It also needs a well documented process to configure this with Custom GPT with an example of working GPT.

Goals

  • Add support for Custom GPT while ensuring minimal token usage and response time
  • Document steps to configure custom GPT with the agent with examples

Expected Outcome

A well documented process to use this agent with custom GPT with example video and custom GPT link.

Acceptance Criteria

  • The agent should work with any custom GPT
  • A well documented process on how to host this agent and configure this with custom GPT should be available for developers.

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Postman collection for DHP use case

Description

Create postman collection for the DHP use case details are as below
base_url - https://mit-ps-bap-client.becknprotocol.io
bap_id - mit-ps-bap.becknprotocol.io
bap_uri - https://mit-ps-bap.becknprotocol.io

Further details for registry , gateway , bpp are here - https://docs.google.com/spreadsheets/d/1X6RPNJH2eQrpjvHtZte9Jw6Zy0fIj7MNOcdlpr5iphE/edit#gid=2086670707

It should have, search, select, init confirm, cancel, and status endpoints.

Postman collection should be published under https://github.com/beckn/beckn-action-bot/artefacts/postman_collection

The collection must use protocol server client of BAP as the base URL.

Goals

  • Postman collection pointing to BAP protocol server.

Expected Outcome

Postman collection for DHP use case that points to BAP protocol server.

Acceptance Criteria

  • All the listed endpoints must be there and the postman collection must be tested with BAP protocol server without any local services running.

setup 1 gateway instance using onix

Description

setup 1 gateway instance using onix and map it to the domain https://mit-gateway.becknprotocol.io/

Goals

  • spin up a new AWS EC2 instance
  • Ensure the nginx reverse proxy and is configured for http and https for the above mentioned domains
  • Ensure ssl certificate is setup for https configuration
  • install gateway using onix
  • Map the https://mit-gateway.becknprotocol.io sub-domain
  • configure the gateway in the registry which was setup earlier
    - this is auto configured as part of the gateway setup

Expected Outcome

Gateway is properly setup and ensure it is running and is configured with the registry

Acceptance Criteria

  • spin up a new AWS EC2 instance
  • Ensure the nginx reverse proxy and is configured for http and https for the above mentioned domains
  • Ensure ssl certificate is setup for https configuration
  • install gateway using onix
  • Map the https://mit-gateway.becknprotocol.io sub-domain
  • configure the gateway in the registry which was setup earlier
    - this is auto configured as part of the gateway setup

Implementation Details

  1. Spin up a new AWS EC2 instance
  2. install registry using the onix script
  3. install nginx and configure reverse proxy and map the domian https://mit-gateway.becknprotocol.io for http and https configurations
  4. configure domains as mentioned above
  5. ensure the gateway is registered with registry

Mockups / Wireframes

NA


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Tech Skills Needed:

Dev-ops

Add function to get beckn `action` from text if applicable.

Description

Add functionality to get beckn action from text if applicable.

Goals

  • If the given text is one of the beckn actions such as (search, select, init, confirm etc.), it should return that action in the response. For e.g. "I'm looking for some shoes" should return "search"
  • If the given text is a question, it should respond back with answers from Open AI. For e.g. "What is 2+2?" should return "4"
  • If the asked question is to prepare an itinerary, it should ask back questions about user preferences such as accommodation types, journey details, dietary preferences, things of interest, journey dates, journey destination, number of members, special requests.
  • If the given input leads to an error, it should gracefully handle

Expected Outcome

The function should return a beckn action if applicable else return an answer from open AI.

Acceptance Criteria

  • All the goals should be achieved for this task to be marked as completed.

Implementation Details

The project should have a service called AI under services/AI.js. This service must have a function : get_beckn_action_if_applicable() to check if the given text is a beckn action or not. It should return the action or the open AI chat completion response if it's not an action.

  • The function should use Open AI to resolve a text into appropriate actions. The list of supported actions should be provided in the context.
  • If the response is not a beckn action but an itinerary, it should ask about user preferences such as accommodation types, journey details, dietary preferences, things of interest, journey dates, journey destination, number of members, special requests.

Mockups / Wireframes

Supported actions for reference.

Image

https://app.swaggerhub.com/apis-docs/beckn/beckn-protocol-core-specification/1.1.0


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Add function to get text from json

Description

Add a function to get text from json using open AI. This function wil be used to translate json responses from an api call such as search results, order confirmations etc. to a human readable whatsapp formatted text that can be sent to the whatsapp user.

Goals

  • Given a json, it should translate it into a text which is formatted
  • If the json is invalid, it should gracefully return with an error
  • If the json contains list, the lists should be formatted like a list

Expected Outcome

If a json object is passed to this function, it should return a formatted text that can be presented to a whatsapp user.

Acceptance Criteria

  • All the goals need to be met

Implementation Details

Mockups / Wireframes

NA

[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Upload catalogs to respective Strapi instance

Description

The catalogs are created in excel https://docs.google.com/document/d/1mqN5MD9l5JlsetIEe1B8WTlpdxIk4g9w3Y0q9bcU1A4/edit?pli=1#heading=h.bzr101xwyivz , now the catalogs are required to be uploaded to the respective Strapi instance.
The details for the Strapi instance are in Infra sheet along with the login creds.

https://mit-bpp-hotel.becknprotocol.io/admin - hotel booking
https://mit-bpp-tourism.becknprotocol.io/admin - ticket
https://mit-bpp-healthcare.becknprotocol.io/admin - DHP
https://mit-bpp-retail.becknprotocol.io/admin - Retail
https://mit-bpp-energy.becknprotocol.io/admin - EV

Goals

  • All the catalogs are populated properly into their respective Strapi instances.

Expected Outcome

5 bpp instances with complete catalogs.

Acceptance Criteria

  • Catalogs must be completely populated,

Support for multiple domains and deployment

Description

Add support for all 5 domains : ev, retail, hotel, healthcare, tourism and add the deployment script so that it can work with actual whatsapp bot.

Goals

  • All 5 domains to be supported, the correct domain should be picked up based on user query
  • All pushes to main branch should deploy and run the service on existing chatbot server under a different port
  • Setup a new url for new port
  • Setup new url on twilio
  • Working video of the chatbot to be created.

Expected Outcome

All goals must pass.

Acceptance Criteria

  • All goals must pass.

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Receive whatsapp location and use it for discovery

Description

If teh user sends location on whatsapp, it should be received on the backend and be used for performing location based filtering.

Goals

  • If a user shares whatsapp location to search ev chargers, AI should be able to use that to find EV chargers.

Expected Outcome

Ability for the user to search items based on a provided location.

Acceptance Criteria

  • All goals must pass

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Reduce the number of questions asked when creating an itinerary, use profile as much as possible.

Description

When the user asks to create an itinerary, AI asks back a bunch of questions which the user has to fill. IN order to create a smootehr experience:

  • AI should ask minimum questions to the user for creating an itinerary
  • AI should not ask about questions which have already been answered or are part of the profile. ALlthgouh Ai should probably confirm before searching

Goals

  • Limited questions to be asked for creating a trip plan for e.g. dates, destination, number of people and transport mode
  • If any of the information has been shared earlier, AI should not ask it again but show it for confirmation.

Expected Outcome

When asked about creating a trip plan, AI should intelligently pick up as much information as possible and only ask bare minimum required questions from the user.

Acceptance Criteria

  • All goals must pass

Implementation Details

[List any technical details about the proposed implementation, including any specific technologies that will be used.]

Mockups / Wireframes

[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.]


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

[Product Name: For eg: Beckn, Sunbird Obsrv etc]

Project Name

[Project Name: Descriptive of the ticket]

Organization Name:

[Organization Name]

Domain

[Area of governance]

Tech Skills Needed:

[Required technical skills for the project]

Complexity

Pick one of [High]/[Medium]/[Low]

Category

Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC]

Sub Category

Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction].

Requirements / outcome visualisation document for the MIT AI Demo project

Description

Prepare a requirements documents, that outlines the following

Goals

  • Define the Functional Requirements for building an AI agent for the MIT Demo
  • Define the Outcome visualisation, defining personas and how the end user will be interacting / using the product
  • Define the success criteria for the MIT Demo

Expected Outcome

An end-to-end demo of a Whatsapp based conversation where the user is able to discover and book stay, event tickets at Yellowstone national park and also be able to discover and book EV chargers during his drive there.

Acceptance Criteria

  • Functional Requirements are clearly defined
  • Outcome visualisation should be defined
  • Success criteria to be clearly defined

Implementation Details

  1. For whatsapp api, we will be using wati https://www.wati.io/
  2. Bot will be build using nodejs
  3. Required catalogs will be implemented using strapi bpp

Mockups / Wireframes

Mockups / wireframes if required will be provided


[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]

Product Name

AI Demo

Project Name

This project is for the MIT Demo, planned for april 9th

Tech Skills Needed:

AI, Nodejs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.