Introduction:

The Azure AD is the identity provider, responsible for verifying the identity of users and applications and providing security tokens upon successful authentication of those users and applications.in this article I have explained about create Azure AD authentication and integrate into bot application using AuthBot library.



The Bot show very simple dialog with openUrl button and this button launches the web browser for validate user credential and AD will response the message with authentication code, you can copy same code and reply back to the bot, bot will validation and response the welcome message.

You can follow below given steps one by one and you will get to see an interesting demo at end of article.

Azure AD App registration:

I will show the steps given below for the azure application creation, user creation and permission configuration. While implementing bot application, We need Client ID, tenant, return URL, so here I will show how to get all the configuration information from the steps given below.

Step 1: 

Login to Microsoft Azure portal and choose Azure Active Directory from the sidebar.

Step 2:

If you have not created AZURE Active directory, try to create new AD creation for tenant url or Select or add tenant url from Domain names sections


Step 3:

 Select Application Registration and Provide the details given below, name for the application , application type must be Web app/API, enter your application redirect URL and click on Create.


Step 4: 

We need to give the permission to access the application from Bot, so grand the permission. Select newly created Application > select Required Permission > Click Grand permission.

Step 5: 

create new user from users and groups sections (optional)

Step 6: 

Create client secret key from Application. Select Application > Select keys > add new / copy client secret key .


Step 4: 

You can copy tenant, client ID and Client Secret and you can follow below steps for create and implement AD authentication in Bot

Create New Bot Application:

Let's create a new bot application using Visual Studio 2017. Open Visual Studio > Select File > Create New Project (Ctrl + Shift +N) > Select Bot application.



The Bot application template gets created with all the components and all required NuGet references installed in the solutions.


Install AuthBot Nuget Package:

The AuthBot provide Azure Active Directory authentication library for implement Azure AD login in Bot.

Right click on Solution, select Manage NuGet Package for Solution > Search “ AuthBot” > select Project and install the package.



You can follow given below steps for integrate AD authentication

Step 1: 

Select Web.config file and add Mode,resourceID,Endpointurl ,Tenant,clientID,clientSecret and redirect url appsettings property and replace Azure AD details as per below
<appSettings>
<!-- update these with your BotId, Microsoft App Id and your Microsoft App Password-->
<add key="BotId" value="YourBotId" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" />
<!-- AAD Auth v1 settings -->
<add key="ActiveDirectory.Mode" value="v1" />
<add key="ActiveDirectory.ResourceId" value="https://graph.windows.net/" />
<add key="ActiveDirectory.EndpointUrl" value="https://login.microsoftonline.com" />
<add key="ActiveDirectory.Tenant" value="dxdemos.net" />
<add key="ActiveDirectory.ClientId" value="2d3b5788-05a5-486d-b2a4-2772a4511396" />
<add key="ActiveDirectory.ClientSecret" value="wU3oFBJ1gjWcB8Lo/fMaaCwg7ygg8Y9zBJlUq+0yBN0=" />
<add key="ActiveDirectory.RedirectUrl" value="http://localhost:3979/api/OAuthCallback" />
</appSettings>

Step 2: 

Select Global.asax.cs file and call all the bot app setting property and assign to AuthBot model class, like below
 
using System.Configuration;
using System.Web.Http;
namespace DevAuthBot
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AuthBot.Models.AuthSettings.Mode = ConfigurationManager.AppSettings["ActiveDirectory.Mode"];
AuthBot.Models.AuthSettings.EndpointUrl = ConfigurationManager.AppSettings["ActiveDirectory.EndpointUrl"];
AuthBot.Models.AuthSettings.Tenant = ConfigurationManager.AppSettings["ActiveDirectory.Tenant"];
AuthBot.Models.AuthSettings.RedirectUrl = ConfigurationManager.AppSettings["ActiveDirectory.RedirectUrl"];
AuthBot.Models.AuthSettings.ClientId = ConfigurationManager.AppSettings["ActiveDirectory.ClientId"];
AuthBot.Models.AuthSettings.ClientSecret = ConfigurationManager.AppSettings["ActiveDirectory.ClientSecret"];
}
}
}

Step 3: 

You can create a new AzureADDialog class to show the default login and logout UI Design dialog. Rightclick on Project, select Add New Item, create a class that is marked with the [Serializable] attribute (so the dialog can be serialized to state), and implement the IDialog interface.
using AuthBot;
using AuthBot.Dialogs;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using System;
using System.Configuration;
using System.Threading;
using System.Threading.Tasks;
namespace DevAuthBot.Dialogs
{
[Serializable]
public class AzureADDialog : IDialog<string>
{

Step 4 :

IDialog interface has only StartAsync() method. StartAsync() is called when the dialog becomes active. The method passes the IDialogContext object, used to manage the conversation.

public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}

Step 5: 

Create a MessageReceivedAsync method and write the following code for the login and logout default dialog and create a ResumeAfterAuth for after the user login, bot will reply the user name and email id details.
/// <summary>
/// Login and Logout
/// </summary>
/// <param name="context"></param>
/// <param name="item"></param>
/// <returns></returns>

public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> item)
{
var message = await item;
//endpoint v1
if (string.IsNullOrEmpty(await context.GetAccessToken(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"])))
{
//Navigate to website for Login
await context.Forward(new AzureAuthDialog(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"]), this.ResumeAfterAuth, message, CancellationToken.None);
}
else
{
//Logout
await context.Logout();
context.Wait(MessageReceivedAsync);
}
}
/// <summary>
/// ResumeAfterAuth
/// </summary>
/// <param name="context"></param>
/// <param name="result"></param>
/// <returns></returns>

private async Task ResumeAfterAuth(IDialogContext context, IAwaitable<string> result)
{
//AD resposnse message
var message = await result;
await context.PostAsync(message);
context.Wait(MessageReceivedAsync);
}

After the user enters the first message, our bot will reply and ask to login to the AD. Then, it waits for Authentication code and bot will reply the user details as a response like below.


Run Bot Application

The emulator is a desktop application that lets us test and debug our bot on localhost. Now, you can click on "Run the application" in Visual studio and execute in the browser


  • Test Application on Bot Emulator
  • You can follow the below steps to test your bot application.
  • Open Bot Emulator.
  • Copy the above localhost url and paste it in emulator e.g. - http://localHost:3979
  • You can append the /api/messages in the above url; e.g. - http://localHost:3979/api/messages.
  • You won't need to specify Microsoft App ID and Microsoft App Password for localhost testing, so click on "Connect".


Related Article:

I have explained about Bot framework Installation, deployment and implementation in the below article

Summary

In this article, you learned how to create a Bot Azure AD login authentication and Logout using AuthBot. If you have any questions/feedback/ issues, please write in the comment box.



Introduction:

Microsoft Academic is a free public search engine for academic publications and literature developed by Microsoft Research. In this library have 375 million entities ,170 million of academic papers. You can now create an account, log in, and create a public profile by claiming the publications you have authored. Claiming your publications will help improve search accuracy, and will showcase your work to the world.

The service replaces the earlier Microsoft research project, Live search academic, libra and Microsoft Academic search.


The Academic Knowledge API offers information retrieval from the underlying database using REST service endpoints for advanced research purposes.

Integrating Microsoft Academic knowledge(MAK) API into different application, we need to create to subscription id. In this article, I will show, how to generate MAK API key in azure.

Setup Academic Knowledge API:

You can follow the below steps for creating an Academic knowledge API account in the Azure Portal.

Step 1

Sign in to the Azure portal.

Step 2

Click + NEW and select / Search “Academic knowledge API” and read about the API and click on "Create".


Step 3:

Provide the API name, pricing, location, resource group and click on create.



Name - Microsoft recommends a descriptive name for API, for example - <common name><APIName>Account.

Subscription - Select the available Azure subscriptions.
Location - Select the service locations.
Pricing tier - You can choose your pricing tier. F0 is free service and S0 is paid service. Based on your usage, you can choose the pricing tier
Select the Resource group > confirm the Microsoft notice and click on "Create" again for creating the account.

Step 4:

Wait for few seconds, and you will get notification after completion. If Cognitive Services account is successfully deployed, click the notification to view the account information. You can see and copy the Endpoint URL in the Overview section.


Step 5:

You can also copy keys in the Keys section to start making API calls in your Xamarin or other applications.



Summary

In this article, you learned about how to Create a Microsoft Academic Knowledge Cognitive Services APIs account in the Azure Portal. If you have any questions/ feedback/ issues, please write in the comment box.

Building Chat Bots with Bing search results using Bot Framework

Introduction:

The Bot Framework supports different types of rich cards, Azure AD authentication and provides a richer interaction experience to the users, I have already shared about message design, login and deployment in my previous article. In this article I will share about how to connect and deploy bots into Bing Search.

You can build Bing Bot Application using Bot Framework and connect application to the Bing channel, whenever user search tag /category text and Bing search output show your Bot along with your website.



You can follow below give steps for implement your bot application into the Bing Channel.

Setup and Create New Bot Application:

You can read my previous article for create a Bots Application Using Visual Studio 2017 from following URL http://www.c-sharpcorner.com/article/getting-started-with-bots-using-visual-studio-2017/

Deploy Bot to Azure:

You can read my previous article for deploy bot application into Azure using Visual Studio 2017 from following URL http://www.c-sharpcorner.com/article/getting-started-deploy-a-bot-to-azure-using-visual-studio-2017/


Publishing Bot on Bing:

Step 1: Publishing a bot on Bing, you can navigate to Bot Framework Portal https://dev.botframework.com/bots > Login with Microsoft account > Select deployed bot application > click the Channels tab, and then click Bing.


Step 2: 

Upload Bot png icon within 32kb. Bot Icon will help people to find bot on Bing with image

Step 3: 

Provide Bot application basic information
Display Name - provide a bot display name. This name will appear in Bing search results.
Long Description – provide about bot application. The bot must operate as described in its bot description.
Website - Link to your website with more information about this bot. 


Step 4: 

The Category and tags option will help us for search bot , You can select relevant category and provide tag value with comma separated .


Step 5: 

You can provide the following publisher information.
Publisher Name
Publisher Email
Publisher Phone


Step 6: 

Provide the privacy and terms url and Click on Submit for Review


Step 7:

 The review process will take a few weeks or days and you will get approved email confirmation. after approval, you can search your bot on bing using search keyword based on category and tag.



Click the Test on Bing , the link to preview a sample of how the bot will appear on Bing on like below 


Related Article:

I have explained about Bot framework Installation, deployment and implementation in the below article

Summary

In this article, you learned how to connect and deploy bots into Bing Search. If you have any questions/feedback/ issues, please write in the comment box.

Introduction:

The Bot Application runs inside an application, like Skype, web chat, Facebook, Message, etc. Users can interact with bots by sending them messages, commands, and inline requests. You control your bots using HTTPS requests to the bot API. In this Article, I am going to show how we can connect Facebook messengers’ channel and integrate Bot Application to the messengers App.


Create FAQ Bot Application:

You can refer my previews article to create and build a Xamarin FAQ Bot using Azure Bot Service and deploy it into Azure. I am not using any coding for develop the Bot Application, you can follow the provided steps in the article to create and deploy FAQ Bot.


Setup Facebook Page:

We can implement Bot Application to the Facebook page. You can create Facebook page or select existing page and navigate to “About page” for find and copy the Page ID.


Login to Facebook APP:

Create a new Facebook App (https://bit.ly/1D0BHpg) on the Page and generate an App ID , App Secret and Page Access Token for integrate Bot to the page messenger. You can click on “Skip and Create APP Id” from following screen.


Create New App ID:
Provide display Name and Contact Email for integrate Bot application and Click on Create.

After click on Create button, it will navigate to App dashboard screen. The side navigation menu having Settings > Basic and copy the APPID and APP Secret. Provide the Privacy URL, Terms of Service URL, App icon and Select Category.



I have shown the following screen to Select Setting > Advanced and Set the "Allow API Access to App Settings slider to "Yes" and click on Save Changes.

Setup Message:

Select Dashboard and Click on Setup button from messenger group


Create Page Access Token:

Select Setting from messenger side navigation menu to generate token, you can select the Page and generate access token and copy the page access token.

Setup Webhooks:

Click Set up Webhooks to forward messaging events from Facebook Messenger to the bot.



Provide following callback URL and Verify token to the webhooks setup page and select the message, message_postbacks, messaging_optins and message_deliveries subscription fields. The following Steps 2, will show how to generate Callback URL and verify token from Azure portal.


You can click on “Verify and Save “and select the Facebook page to Subscribe the webhook to the Facebook page.

Connect Facebook Channel:

Step 1: Login to Azure portal > Select the “All Resources” > Select Channels > Select Facebook Messengers, let we start configure “Facebook Messengers “Channel and follow below steps, the end of this article you can able to deploy Bot into the Facebook messenger



Step 2:

The Azure Facebook configuration channel will generate following Callback URL and verify token, You can copy those information and Past to the Facebook webhook setup screen. (Return to the Facebook messenger setup screen).





Step 3:

You can paste the Facebook App ID, Facebook App Secret, Page ID,and Page Access Token values copied from Facebook Messenger previously. You can use the same bot on multiple facebook pages by adding additional page ids and access tokens.


Submit for Facebook Review:

Select Ap preview and Click and Submit for review after submit will take some time for the facebook team testing to the messenger bot and you can mark your app live available to the public , then you can test messenger from the Facebook page .


Facebook Team review and Testing:

You can verify Facebook team testing progress, navigate to your Facebook page and Click on Inbox and verify, if anything problem to the messenger bot, the Team will update the bug list from App review screen.

Xamarin FAQ Messengers testing:

You can select your Facebook page and test your bot application. I have trained 7000+ more questions to the Facebook messengers bot from Xamarin Q & A Page,if you want to look the xamarin FAQ demo. Navigate to Xamarin Q & A Facebook page and ask your xamairn related question.





Summary:

In this article, you have learned how to integrate bot application right into your Facebook Page via Azure Microsoft AI. If you have any questions/feedback/issues, please write in the comment box.





Agenda:

  • Introduction to Microsoft Bot Framework
  • Design and Develop,Test /Debug Bot Application with Demo
  • Getting Started With Azure Bot Service.
  • Deploy /Publish Intelligent Bots using Bot Builder SDK (.Net) with Demo
  • Embed a bot in a Xamarin Mobile Application
Free Registration : https://goo.gl/KSPzgv





Introduction:

Microsoft introduced the public preview of Video Indexer as a part of Cognitive Service. Previously, we used Video API but now it's replaced with Video Indexer. Video Indexer automatically extracts the metadata and builds intelligent innovative AI applications based on Video and Audio.

In this article, I will show how to integrate Video Indexer embeddable widgets into the mobile application.

Create Video Indexer Account:

The implementing Video Indexer into the application, you must have to create account and upload your video using my previous article as a reference .
Video Indexer supports embedding two types of widgets into your Mobile application
Cognitive Insights – its Includes all visual insights that were extracted from video indexer.
Player -its enable you to stream the video.
Embedding Video:
I will show below steps for how to get embedding source from video indexer portal

Step 1: 

Login to Video Indexer Portal using Microsoft, google or Azure Active directory account

Step 2: 

Select your video, whichever need to integrate to the application.

Step 3: 

Click the "embed" button that appears below the video.


Step 4: 

After click on “embed” button, Select the widget you want to embed with the desired options. (player/insights)



Step 6: 

You can copy the embed codes from embed popups and start implement into your application for Public videos. If you want to embed a Private video, you have to pass an access token in the iframe src attribute as a query string .

Create Xamarin / Web Application:

Let's start with creating a new Xamarin Forms Project using Visual Studio. Open Run - Type “Devenev.Exe” and enter - New Project (Ctrl+Shift+N) - select Blank Xaml App (Xamarin.Forms) template.



It will automatically create multiple projects, like .NET Standard, Android, iOS, and UWP.

Implement Cognitive Insights Widget:

Cognitive insights widget contains all the visual insights that were extracted from the video after the indexing process such as people appearances, top keywords, sentiment analysis, transcript, translate, and search.
Let we start implement into the Xamarin Application.
You can add webview control inside the content page as per below xaml design

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:VideoIndexer"
:Class="VideoIndexer.MainPage">
<WebView x:Name="browser" WidthRequest="1280" HeightRequest="780"></WebView>
</ContentPage>

You can use your cognitive insights widget code from c# code as a htmlwebviewsource . You can specify the query string for whatever widgets need to display ( <url>?widgets=people&title=myInsights)


public MainPage()
{
InitializeComponent();
// var browser = new WebView();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.blob.core.windows.net/public/vb.widgets.mediator.js'></script></head>
<body><iframe width='580' height='780' src='https://www.videoindexer.ai/embed/insights/9123e16b12' frameborder='0' allowfullscreen></iframe>
</body></html> ";
browser.Source = htmlSource;
}

You can deploy the application, the output look like below


Implement Video Insights Widget:

The video player widget is a customized Media Player that except of providing video streaming, contains extra features such as playback speed and closed captions. Refer below code for video insight wedge implementation 

public MainPage()
{
InitializeComponent();
// var browser = new WebView();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.blob.core.windows.net/public/vb.widgets.mediator.js'></script></head>
<body><iframe width='1280' height='720' src='https://www.videoindexer.ai/embed/player/9123e16b12' frameborder='0' allowfullscreen></iframe>
</body></html> ";
browser.Source = htmlSource;
}

Implement Video and Cognitive Insights Widget:

Copy the player and cognitive insights embed code and also include javascript communication file for communicate with each other widget

var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.blob.core.windows.net/public/vb.widgets.mediator.js'></script></head>
<body><iframe width='1280' height='720' src='https://www.videoindexer.ai/embed/player/9123e16b12' frameborder='0' allowfullscreen></iframe>
<iframe width = '1280' height = '780' src = 'https://www.videoindexer.ai/embed/insights/9123e16b12/?widgets=people&title=myInsights' frameborder = '0' allowfullscreen ></iframe >
</body></html> ";
browser.Source = htmlSource;

Summary

In this article, we learned how to sign in to Video Indexer and integrate Video Indexer embeddable widgets into the mobile cross platform application. If you have any questions/feedback/ issues, please write in the comments box.




MSDN Source Code


Introduction:

Microsoft introduced the public preview of Video Indexer as a part of Cognitive Service. Previously, we used Video API but now it's replaced with Video Indexer. Video Indexer automatically extracts the metadata and builds intelligent innovative AI applications based on Video and Audio.



In this article, I will show how to integrate Video Indexer embeddable widgets into the mobile application.

Create Video Indexer Account:

The implementing Video Indexer into the application, you must have to create account and upload your video
using my previous article as a reference .

Video Indexer supports embedding two types of widgets into your Mobile application

Cognitive Insights – its Includes all visual insights that were extracted from video indexer.

Player -its enable you to stream the video.

Embedding Video:

I will show below steps for how to get embedding source from video indexer portal 

Step 1: 

Login to Video Indexer Portal using Microsoft, google or Azure Active directory account

Step 2: 

Select your video, whichever need to integrate to the application.

Step 3:

 Click the "embed" button that appears below the video.


Step 4:

 After click on “embed” button, Select the widget you want to embed with the desired options.
(player/insights)


Step 6: 

You can copy the embed codes from embed popups and start implement into your application for 
Public videos. If you want to embed a Private video, you have to pass an access token in the iframe src attribute as a query string .

Create Xamarin / Web Application:

Let's start with creating a new Xamarin Forms Project using Visual Studio. Open Run - Type “Devenev.Exe” and enter - New Project (Ctrl+Shift+N) - select Blank Xaml App (Xamarin.Forms) template.



It will automatically create multiple projects, like .NET Standard, Android, iOS, and UWP.

Implement Cognitive Insights Widget:

Cognitive insights widget contains all the visual insights that were extracted from the video after the indexing process such as people appearances, top keywords, sentiment analysis, transcript, translate, and search.

Let we start implement into the Xamarin Application.

You can add webview control inside the content page as per below xaml design 

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:VideoIndexer"
:Class="VideoIndexer.MainPage">
<WebView x:Name="browser" WidthRequest="1280" HeightRequest="780"></WebView>
</ContentPage>

You can use your cognitive insights widget code from c# code as a htmlwebviewsource . 

You can specify the query string for whatever widgets need to display ( <url>?widgets=people&title=myInsights)

public MainPage()
{
InitializeComponent();
// var browser = new WebView();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.blob.
core.windows.net/public/vb.widgets.mediator.js'></script></head>
<body><iframe width='580' height='780' src='https://www.videoindexer.ai/embed/
insights/9123e16b12' frameborder='0' allowfullscreen></iframe>
</body></html> ";
browser.Source = htmlSource;
}

You can deploy the application, the output look like below


Implement Video Insights Widget:

The video player widget is a customized Media Player that except of providing video streaming,
contains extra features such as playback speed and closed captions. Refer below code for video insight wedge implementation

public MainPage()
{
InitializeComponent();
// var browser = new WebView();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.blob.
core.windows.net/public/
vb.widgets.mediator.js'></script></head>
<body><iframe width='1280' height='720' src='https://www.videoindexer.ai/embed/
player/9123e16b12'
frameborder='0' allowfullscreen></iframe>
</body></html> ";
browser.Source = htmlSource;
}

Implement Video and Cognitive Insights Widget:

Copy the player and cognitive insights embed code and also include javascript communication file
for communicate with each other widget

var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><head><script src='https://breakdown.
blob.core.windows.net/public/
vb.widgets.mediator.js'></script></head>
<body><iframe width='1280' height='720' src='https://www.videoindexer.
ai/embed/player/9123e16b12'
frameborder='0' allowfullscreen></iframe>
<iframe width = '1280' height = '780' src = 'https://www.videoindexer.
ai/embed/insights/9123e16b12/?
widgets=people&title=myInsights' frameborder = '0' allowfullscreen ></iframe >
</body></html> ";
browser.Source = htmlSource;

Summary

In this article, we learned how to sign in to Video Indexer and integrate Video Indexer embeddable
widgets into the mobile cross-platform application. If you have any questions/feedback/ issues,
please write in the comments box.



MSDN Source Code

Featured Post

Improving C# Performance by Using AsSpan and Avoiding Substring

During development and everyday use, Substring is often the go-to choice for string manipulation. However, there are cases where Substring c...

MSDEVBUILD - English Channel

MSDEVBUILD - Tamil Channel

Popular Posts