跳到主要內容

發表文章

目前顯示的是 11月, 2017的文章

[解決] Update-database 時遇到錯誤訊息: Cannot open server requested by the login. Client with IP address is not allowed to access the server.

簡單的描述一下遇到的狀況 Azure上面有一個我新建的Database, 當我試著使用Entity Framework Code Migration去更新資料的時候, add-migration initialModels update-database visual studio 卻拋出以下的錯誤訊息 Cannot open server 'avbotdata' requested by the login. Client with IP address '108.123.1.251' is not allowed to access the server.  To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect. 原因很明顯, 我們想要存取資料庫的時候, Azure 認為發出請求的IP不在Whitelist裡面, 所以擋住了update的請求 解法其實很簡單 Step 1. 選擇你要設定的資料庫, 在搜尋列上輸入 Firewall Step 2. 輸入你要加入的IP後存檔

Visual Studio 小常識, Launch.json

如何產生Launch.js, 因為太常用了可是又怕忘記, 所以把步驟簡單的記錄下來, 才不用每次要用時都要勞駕谷哥大神 首先,  滑鼠點擊 Debug的Icon 再來,  滑鼠點擊上方的齒輪後, Launch.json就會被建立出來了

[C#]Make Cortana speak Dialog prompt

This article focuses on how to make Cortana speak PromptDialog. It's quite simple, we have to specify message spoken by Cortana in PromptOption.speak and pass PromptOption to PromptDialog.Confirm() or PropmtDialog.Choice. Prompt Choice Prompt Confirm If you don't want show option on the canvas you can empty PromptOption.options field from the code. Reference: https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-text-to-speech https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-cortana-skill https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.dialogs.promptoptionswithsynonyms-1.-ctor?view=botbuilder-3.11.0

[UWP] Display a map on Cortana Canvas through UWP voice command

This article focuses on how to get map info from bingmap service and response to Cortana via UWP Voice Command. Subscribe Azure Bing Map Service Create Bing Map Api on Azure portal. Save your QueryKey, you have to use this key to get map info later. Voice Command Background app service Create a helper class for bingmap service: Since Cortana only accept text and local image file responds from our UWP,  we have to store the online map information as a local file and pass to Cortana. Response VoiceCommandContentTile to Cortana

LINQPad 如何連接本地資料庫

前言 用過LINQPad就會知道, 它是個非常好用的工具, 無論是用來學習LINQ或是輔助我們使用LINQ開發程式, 絕對會比我們在Visual Studio中的除錯模式裡觀察變數值得變化還要來的方便 而或許在某些情況下, 我們會希望使用LINQPad時資料是來自於資料庫, 以方便我們做開發或是某方面上的除錯, 所以今天的分享就是著重在如何在LINQPad上連接資料庫 Add Connection 選擇Entity Framework (DbContext v4/v5/v6) 設定連線 Path to Custom Assembly, 選擇你之前串接Entity Framework的程式 Full type Name of Typed DbContext , 選擇程式中定義的DbContext Path to application config file , 這邊可以填你web app的Web.config來提供連接資料庫的connection string 如果一切都沒問題, 我們就會看到資料庫的Table 出現在左側嘍 接下來可以新增一個Query去查詢Db資料 新增Query var logs = UserLogs.Where( x => x.Id > 100); Console.WriteLine(x); 使用程式裡定義好的函式 假設程式中自定義了一個UserLogRepository的類別, 用來封裝所有UserLogs資料表的查詢邏輯 public class UserLogRepository { public DataContext Context { get; set; } public UserLogRepository() : this(new DataContext ()) { } public UserLogRepository(DataContext context) { this.Context = context; } public IEn

[UWP] 背景處理Cortana 的Voice Command 請求

前言 如果你希望開發一支UWP在背景處理事情, 然後將處理完的資料或狀態顯示在Cortana的Canvas上面的話, 我們會需要寫一個backgound server去處理Cortana的請求, 而基本上有以下幾個步驟 Step 1. 前置步驟 新增專案 選擇Windows Runtime Component 專案建立好之後, 我們先把Class1.cs重新命名(列如 MyVoiceCommandService.cs) 設定Package.appxmanifest 加入以下的程式碼, 然後把EntryPoint指定到剛剛建立的MyVoiceCommandService.cs 編輯VoiceCommand.xml 實作IBackgroundTask Step 2. 處理Cortana VoiceCommand的請求 取得VoiceCommandServiceConnection實體 這是用來讓我們的背景程式與Cortana溝通的介面 建立Response的內容 基本上我們可以回傳VoiceCommandUserMessage, VoiceCommandContentTile這兩種內容給Cortana User Messag 讓Cortana說話, 或是讓她秀訊息在Canvas上面 Content Tile 這個有點像是Bot Framework中的Card, 我們可以把文字跟圖片塞在Content Tile中讓Canvas顯示出來, 我們可以一次回傳多個Content Tile, 當使用者點了其中一個之後, 就會觸發開啟我們程式的事件 VoiceCommandResponse 建立VoiceCommandResponse的實體, 然後塞入剛剛建立的VoiceCommandUserMessage 或是 VoiceCommandContentTile, 最後再透過VoiceCommandServiceConnection回傳給Cortana Demo Hey Cortana, find God Father on My Library 完整程式碼 https://github.com/andy51002000/Simple-UWP

[Azure Function] 從Application Settings 中取出變數

前言 Azure Function 是微軟推出的Serverless 的雲端服務, 對於開發人員來說, 幾乎不需要耗費心力去管Server的環境設定, 只要專心寫Code然後上傳到雲端, That's All ~ 基本上一些小型的Web Api 非常適合部屬在Azure Function 上, 它可以串接我們在Github上的帳號, 然後選擇repository去部屬, 簡而言之Azure Function 好處多多, 回到正題~ 如果有些敏感資訊像是某些雲端服務的Subscription key或是資料庫的帳密, 我們不想暴露在程式中的話, 我們可以把他們寫在Application Settings裡面 當我們想在程式中取出變數時, 只要

[Bot Framework] Card 使用教學(一) ThumbnailCard

前言: 微軟的Bot Framework除了提供一般的文字回應之外, 也支援開發者們把文字圖片以及按鈕, 一同封裝在Card的物件裡, 然後再回傳給前端的Channel, 前端的使用者就能透過Card來跟我們Bot互動 在官方的API文件裡, 可以發現IMessageActivity有一個Attachments的屬性, 所以如果想要回應一個Card, 只要把Card實體塞到IMessageActivity.Attachments的集合裡面, 就能把Card回應給使用者 目前微軟Bot Framework提供了許多種Card的形式, 而我比較常用的是HeroCard, ThumbnailCard,  SignInCard. 而今天要介紹的是HeroCard, ThumbnailCard ThumbnailCard ThumbnailCard的作用是讓你顯示一張小圖搭配文字描述 基本上建立ThumbnailCard的方法如下 定義CardImage 定義CardAction 在這個CardAction裡面,  我們定義一個按鈕, 當這個按鈕被按下去的時候, 會開啟網頁 建立ThumbnailCard實體 加到IMessageActivity.Attachments裡 完整程式碼範例如下