Starting from the SDK version 3.1.4 the NutritionAdvisor is only accessible using the NutritionAI Hub key. A key bought for the previous NutritionAI product won't work with this feature.
The Nutrition Advisor is an intelligent chatbot designed to offer personalised guidance on nutrition, diets, and healthy eating habits. Whether you're looking to explore a new diet, understand the nutritional value of certain foods, or find delicious and balanced recipes, the Nutrition Advisor is here to assist. Users can interact with the Nutrition Advisor through text messages, engaging in a conversational experience where they can ask questions about various diets like keto, vegan, Mediterranean, and more. The chatbot provides detailed insights into the benefits, potential drawbacks, and suitability of these diets based on individual goals and preferences.
As opposed to the rest of the SDK, the Nutrition Advisor has a different API entry point:
NutritionAdvisor
Use these steps to initialise the conversation and enable users to send messages:
To start a conversation initConversation
has to be invoked. The response will either indicate a success state, which means message can be sent to the advisor. In case of an error, an error message will detail the cause.
Text messages are sent using the sendMessage
API. The reply (if successful) will contain a PassioAdvisorResponse
response. This object consist of:
threadId - identifies the conversation
messageId - identifies the specific message
markupContent - text response from the advisor denoted with markup tags. This can be used to style the text when rendering
rawConent - text response without the markup tags
tools - list of actions that can be executed by the advisor. Only should be used by the SDK
extracedIngredients - will contain a list of foods if the request to the advisor was an image recognition request or extract ingredients from text message request
Image are sent to recognition using sendImage
. As mentioned above, in the PassioAdvisorResponse object, the extractedIngredients
property will hold the recognised foods.
In the case that a PassioAdvisorResponse contains a tool called searchMatchIngredient
, the Advisor has the ability to parse the text response and return the list of foods. If a message that has this tool is passed to the fetchIngredients
API, the returned response will contain foods in the extracedIngredients field.
This feature is particularly useful when trying to log foods when directly communicating with the chatbot. A common use case is when user ask for a specific recipe. They can then initiate the extraction of foods from the message, and see their nutrition value and finally log the entire meal in one action.
Create a screen where the user can type messages and send images to the NutritionAdvisor. Upon initiating the screen, set up the conversation by calling initConversation
.
When the user types a message in the input text field and taps "Send", invoke the sendMessage
function. Because this is an asynchronous function, add an animation to indicate this behaviour.
If the response from the advisor contains a tool called searchMatchIngredient
show an action button "Find foods" to initiate extraction of the foods. Invoke the fetchIngredients
function using the response from the Advisor.
Create a view where the user can see the extracted foods, their serving size and have the ability to log them.
Add the ability for the user to select an image from the library of the phone. Once the image is obtained, invoke the sendImage
to get the list of foods. If foods are recognised, the response will contain a list of foods, use the same result view to show them.