Example #1
0
        /// <summary>
        /// Helper function to update greeting state with entities returned by LUIS.
        /// </summary>
        /// <param name="luisResult">LUIS recognizer <see cref="RecognizerResult"/>.</param>
        /// <param name="turnContext">A <see cref="ITurnContext"/> containing all the data needed
        /// for processing this conversation turn.</param>
        /// <returns>A task that represents the work queued to execute.</returns>
        private async Task UpdateBlockchainState(RecognizerResult luisResult, ITurnContext turnContext)
        {
            if (luisResult.Entities != null && luisResult.Entities.HasValues)
            {
                // Get latest GreetingState
                await _blockchainStateAccessor.DeleteAsync(turnContext);

                BlockchainState blockchainState = await _blockchainStateAccessor.GetAsync(turnContext, () => new BlockchainState());

                JObject entities = luisResult.Entities;

                // Supported LUIS Entities
                string[] askingPriceEntities = { "askingprice" };
                string[] descriptionEntities = { "description" };

                // Update any entities
                // Note: Consider a confirm dialog, instead of just updating.
                foreach (string askingPriceEntity in askingPriceEntities)
                {
                    // Check if we found valid slot values in entities returned from LUIS.
                    if (entities[askingPriceEntity] != null)
                    {
                        string askingPrice = (string)entities[askingPriceEntity][0];
                        blockchainState.AskingPrice = int.Parse(askingPrice);
                        break;
                    }
                }

                foreach (string descriptionEntity in descriptionEntities)
                {
                    if (entities[descriptionEntity] != null)
                    {
                        blockchainState.Description = (string)entities[descriptionEntity][0];
                        break;
                    }
                }

                // Set the new values into state.
                await _blockchainStateAccessor.SetAsync(turnContext, blockchainState);
            }
        }
Example #2
0
        // Helper function to greet user with information in GreetingState.
        private async Task <DialogTurnResult> SellOnMarketplace(WaterfallStepContext stepContext)
        {
            ITurnContext    context       = stepContext.Context;
            BlockchainState greetingState = await UserProfileAccessor.GetAsync(context);

            HttpClient httpClient = new HttpClient
            {
                BaseAddress = new Uri(_botServices.BlockchainEndpoint),
            };
            HttpResponseMessage response = await httpClient.PostAsync("", new StringContent(JsonConvert.SerializeObject(new MarketplaceRequest()
            {
                Description = greetingState.Description,
                AskingPrice = greetingState.AskingPrice,
                Email = "*****@*****.**",
            })));

            string result = await response.Content.ReadAsStringAsync();

            // Display their profile information and end dialog.
            await context.SendActivityAsync($"Your item is now for sale!");

            return(await stepContext.EndDialogAsync());
        }