跳到主要內容

發表文章

目前顯示的是 十月, 2018的文章

使用Azure cli 建立對話式聊天機器人(Bot Service)

前言 如果覺得使用Azure Portal建立Bot很麻煩的話, 不妨試試看用Azure Cli, 以指令的方式來建立

以下教學如何使用Azure cli 快速建立一個Bot

前置作業: 需要先在開發機上安裝Azure cli的套件
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest

註冊新的應用程式
每隻Bot應用都需要先在微軟的App Portal註冊, 之後會取得APP ID 以及Public key
(https://apps.dev.microsoft.com/portal/register-app)


Public Key

這組密鑰需要自己手動按下 Generate New Password 去產生, 得到之後記得要好好保存, 因為它只會在UI上顯示一次



如上圖所示, 以上步驟完成後會可以得到App ID\Public key, 當後端程式(Bot邏輯)與Azure Bot  Connector Service溝通時會需要App ID\Public key來認證身分

在雲上建立Bot Service 登陸azure


az login
建立資源群組(若使用既有群組,可以省略)


az group create --name BotResourceGroup --location "West US"
建立bot 相關資源


az bot create --resource-group "BotResourceGroup" --name "andy-test-bot" --kind "function" --description "description-of-my-bot" --appid <YOUR_APP_ID> --password <YOUR_PUBLIC_KEY>appid, password 記得換成剛剛取得那組帳密

kind - 目前有三種資源方案function, registration, web


Web App Bot
註冊資訊到Bot Channels Registration, 並將Bot建立在Az…

使用UWP 設計 MVVM 軟體架構(三) 在view中使用view以外的資源, 以加入Converter 為例

本篇文章簡單介紹UWP MVVM 如何在view中使用view以外的資源(以加入Converter 為例)

假設view上有個 Image 元件, 它的Visibility屬性被綁定在MyViewModel.IsHide 這個Property上,


<Image Margin="200,200,0,0"MaxWidth="50"MaxHeight="50"HorizontalAlignment="Center"VerticalAlignment="Center"Source="ms-appx:///Assets/googleIcon.png"Visibility="{Binding IsHide, Mode=OneWay}"/>

為了提升可讀性, 我們將 MyViewModel.IsHide 宣告成布林型別,

但由於 Visibility 屬性只能接受整數型別, 所以我們需要多做一個Converter 來轉換成UI上需要的值


publicclassBoolToIntConvert: IValueConverter { publicobjectConvert(objectvalue, Type targetType, object parameter, string language) { return (bool)value == true ? Visibility.Collapsed : Visibility.Visible; } publicobjectConvertBack(objectvalue, Type targetType, object parameter, string language) { thrownewNotImplementedException(); } }


問題是, 如何讓view 使用這個外部類別(BoolToIntConvert)呢


先宣告Converter 的路徑 標明Converter的Namespace

<…

[C#] 實作如何讓Cortana Skill 呼叫UWP

前言 當我們在實作Cortana Skill的時候, 我們可以將雲上的資料回傳給Cortana 並且顯示在Canvas上 來跟使用者互動

但實務上, 有些情況因為Canvas本身的限制, 所以需要再刻一個負責前端的UWP來顯示Skill回傳的資料

以下即介紹如透過實作UWP的 Deep link使之與 Cortana 互動


UWP的部分
設定Protocol右鍵 Package.appxmanifest 選擇 View Code



加入

<Extensions><uap:ExtensionCategory="windows.protocol"><uap:ProtocolName="YOUR_URL"><uap:DisplayName>"YOUR_NAME"</uap:DisplayName></uap:Protocol></uap:Extension></Extensions>
這邊假設
YOUR_URL = skill.mytest.clien
YOUR_NAME = mytest
複寫OnActivated
當程式被Cortana叫起來時, 這個函式會被執行
複寫它, 使之將頁面切換至相應的頁面

var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(Views.ListPhotos), protocolArgs.Uri.Query);

如範例所示, 我們會將頁面導向到 Views.ListPhotos



Views.ListPhotos複寫OnNavigatedTo
讓我們在導向至這個頁面的時候, 可以先去載入相關資料

protectedoverrideasyncvoidOnNavigatedTo(NavigationEventArgs e) { var query = e.Parameter asstring; await vm.LoadPhotos(query); }


Cortana Skill 的部分還蠻簡單…

[C#] UWP 遠端部屬 Remote Deploy

通常當我們開發UWP到某一特定階段的時候會想要把程式部屬在其他實體機器上, 讓它跑跑看有沒有問題出現

基本上, Visual Studio 2017  除了部屬在虛擬機或是本機上之外, 也另外提供了遠端部屬的功能,


要啟用這個功能,

首先, 遠端機器必須安裝 Remote Tools for Visual Studio 2017

https://visualstudio.microsoft.com/downloads/?q=remote+tools#remote-tools-for-visual-studio-2017



安裝完後, 我們可以在開始選單上找到, Remote Debugger (左鍵執行)



Remote Debugger 起來後會開始等待連接


第二步, 右鍵專案名稱 > Properties


在Debug的頁簽下, 完成以下的設定:

選擇裝置種類, 搜尋裝置, 選擇你要連接的裝置




最後, 點選工具列下方得執行 Visual Studio 就會將UWP部屬在連接的遠端機器上並且執行




[簡易教學] 如何使用 OneDrive API 搜尋雲端上的檔案(以Postman為例)

本篇文章簡單的介紹, 如何使用OneDrive API來取得特定的檔案(使用POSTMAN)

基本上, 使用OneDrive API取得使用者任何資料都需要一個認證過程來取得資料擁有者的授權, 而要完成這個授權的流程

首先, 需要在微軟的網站上註冊你的應用程式

https://apps.dev.microsoft.com/#/appList





註冊完之後我們會獲得

Application ID: 1ba84ab3-12fe-4c1e-86f2-0c5636c389ca

Key: kHOUAH^&H=

再來, 加入Redirect URL
1. 選擇Add Platform
2. 選擇Web Application 然後加入https://www.getpostman.com/oauth2/callback 如下



取得授權(打開POSTMAN)

1. 認證方式選擇Oauth 2.0
2. 打開Get New Access Token的對話框



輸入相關資料



Auth Url: https://login.microsoftonline.com/common/oauth2/v2.0/authorize
Access Token Url: https://login.microsoftonline.com/common/oauth2/v2.0/token
Client ID: 你的Application ID
Client Secret: 你的Application Key
Scope: files.readwrite offline_access
Grant Type: Authorization Code (此方式會額外得到一組refresh token, 將來若access token 過期, 可以用它來索取新的access token)


授權結束之後會取得一組access token, 對於OneDrive的後端來說, 夾帶這個token的API請求就是合法的請求, 因此可以有條件地存取資源



開始存取資源(搜尋檔案)

GET https://graph.microsoft.com/v1.0/me/drive/root/search(q='38')
Authentication bearer <YOUR_TOKEN>




Response…