發表文章

目前顯示的是 5月, 2016的文章

[教育訓練] 微軟ALM教育訓練 – VSTS

圖片
2016/5/30假恆毅教育訓練中心舉辦的『ALM與DevOps課程』由微軟主辦,集英信誠承辦。 這個課程舉辦了很多次了,每次和學員討論軟體開發流程與DevOps相關的實務議題時,都有不少的新發現與收穫,很是有趣。

關於bot framework (2) - 建立一個最基本的bot(v1舊版)

圖片
在瞭解了bot framework的架構之後,我們來看看如何建立一個最基本的bot。 前面提到過,微軟提供了一個簡單但完整的visual studio project template,你可以從底下這邊找到: http://aka.ms/bf-bc-vstemplate   下載後的檔案是Bot Application.zip,請依照 指示 複製到 %USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#  資料夾底下。 完成之後,你開啟VS2015,會看到: 這表示你可以開發Bot了,但先別急,請先用MS Account登入,到 https://dev.botframework.com/bots/new 註冊一個bot 註冊時,你會發現需要填一堆資料,其中要留意endpoint,這個地方要填寫https開頭的WebAPI位置,由於我們還沒有建立好這個WebAPI網站,因此先隨意填寫一個假的即可(但別忘了建立好WebSite之後要回來改): 另外,底下有個Config info那一欄,主要是填寫一個你自己取的bot識別碼,用來識別你的bot,只要是唯一值即可(此欄位未來不得修改): 欄位都填寫完成之後,按下底下的Register,建立一個bot,完成後你會看到底下畫面: 注意上圖中紅框的Details部分,因為Endpoint我們剛才是亂填的(為了先建立一個bot),所以待會把WebAPI寫好,把網站上傳到azure web app之後,要來改這個位置。 還記得我們剛才安裝好了bot template嗎? 回到VS2015,我們利用安裝好的template建立一個專案,建立好之後,找到該專案的Web.Config: 其中的AppId和AppSecret,就是你剛才建立好的Bot的Details畫面上的內容: (app secret要按一下show才看得到唷) 更新好Web.config之後,我們打開範本中的WebApi看一下: 你會發現當有人傳遞訊息給我們的Bot,他會以post的方式傳入MessagesController,我們可以透過Message物件取得,我們把程式碼稍微改一下: public async Tas...

關於Skype Bot (1) - 建立

圖片
在前幾天的 文章 中提到過,如何建立一個WebAPI來串接LineBot。 除了Line之外,Skype也是現在在商業上,相當普遍常用的IM與通訊機制,而Skype目前提供的Bot相關API,也比Line來的完整一些,在China目前Skype也大致上通暢沒有被屏蔽。 因此我們接著來看,如何建立一個SkypeBot。概念上差不多,我們依舊需要為其建立一個WebSite(WebAPI),作為接收訊息的管道。建議您先建立一個空的Azure Web SIte,待會申請SkypeBot時我們就會用到。 接著,你必須要用Microsoft Account(像是hotmail, Outlook.com…etc.)在底下網址註冊一個SkypeBot: https://developer.microsoft.com/en-us/skype/bots/manage (意即,該網址必須用Microsoft Account登入) 你會看一個註冊skype bot的畫面: 填寫資料的時候,有一些地方要注意… 其中填寫Messaging Webhook 這個URL的位置,要放你寫好的WebAPI的位置,由於沒有填寫他不會讓你申請,因此你得先把這個網站的網址準備好(也可以隨便寫一個啦),然後再申請Skypebot。填寫時留意,網址一樣要用https開頭。 Microsoft Application ID這個欄位,要放你建立好的Microsoft Application,什麼是Microsoft Application? 如何建立? 你可以在登入MS Account之後,透過底下這個位置來建立一個Application: https://apps.dev.microsoft.com/#/appList 建立上述的應用程式之後,你會取得一個像是GUID的應用程式識別碼,接著,你必須進一步的產生應用程式密碼(點選下圖中的『產生新密碼』): 完成後,取得的資料類似: 2de7ff45-cfed-4fff-b2d2-3fe0d0b6abc1 和 cb4kccqGYKqfbVOLYMXe7As 這就是你待會會在WebAPI網站中會用到的OAuthApplicationId和OAuthApplicationSecret 把相關資料填寫完畢之後,會得到一個SkypeBot,大致上畫...

使用C#開發LineBot (1) - 用c#建立一個LineBot

圖片
注意,本篇部分內容已過時,新版Line bot申請流程,請參考 這篇 。 前面 說過,不知道發生了什麼事情,全球幾個大廠幾乎在同一個時間announce各家的機器人技術或介面,包含Microsoft 的bot API,還有FB、Line…到最近的Google,總之突然間,原本封閉的IM突然都支援建構bot了…這會是巧合嗎? 我猜並不是… 但不管如何,對技術人員來說,如何串接各家的bot,是一個重點。 C#程式設計師要怎麼連結Line最近提供的API呢? 其實很簡單,只有幾個動作,首先,你必須申請LineBot開發帳號,申請的位置在底下這裡: https://business.line.me/zh-hant/products/4/introduction (已過時) ( 更新 : 新版的Line Bot叫做 Messaging API ,申請位置位於 https://business.line.me/zh-hant/services/bot ) 更新2 : 新版Line bot申請流程,請參考 這篇 。 相關的新聞訊息可以參考這邊: https://business.line.me/news/3/detail ( 已過時 ) 申請的過程不是我們想講的重點,請自行上去 申請 ,申請時建議您申請 Developer Trial: 完成申請之後,在LineBot管理畫面,你會得到底下幾組關鍵的資料,包含Channel ID, Secret, 以及MID ( 新版的重點應該是Channel Access Token ): 有了這些資料你就可以建立一個LineBot來收發line訊息了。你測試的時候,可以先透過上面的QR Code將這個LineBot帳號加為好友,以便於後續的測試。另外,上面有一個CallbackURL,就是接收訊息用的URL。 透過C#該如何開發呢? (btw, 本篇沒用到Microsoft bot framework,雖然都是介紹bot,但和先前介紹的bot framework無關,是剛好順手寫一下這系列) 基本上只需要呼叫Line提供的REST API就可以發送Line訊息,而接收訊息我們只需要建立一個WebAPI即可,如果你想自己K一下document,相關的資料可以參考底下這邊: https://developers.line.me/bo...

關於bot framework (1) - 緣起

圖片
微軟在2016年的Build釋出了bot framework,但如果我跟你說,我曾經參與一個團隊,在約莫兩三年前,有一段時間我們主要的工作就是開發自動化訊息對談的Chat Bot,並且試著將相關的語意分析(像是我們後面會提到的LUIS)應用在商業環境中…我猜想你應該也不會覺得有何奇怪,畢竟,Siri早就已經出現很久,而Chat Bot也並非真的是一個很艱深的技術。 但真正有趣的是,2016年,像是大家聯合起來了一樣,FB、Microsoft、Google幾個大廠都針對bot有一些發表,而IM(像是line)也開始迫不及待的紛紛開放對外串接的API,讓我不免開始覺得,是不是大家後面有一些什麼沒有說的計畫? 過去我們在開發bot的時候,最困難的其實是語意分析,這個部份有不少論文在討論,也有open source的資源可以使用。語意分析讓程式可以拆解一段用戶輸入的對話,把對話中的主要文字分段,然後確認名詞、動詞…等詞性,並且分析語句的態度,是問句? 或是祈使句? 或是其他… 這個機制的目的是讓程式可以知道用戶說話(打字)的意思。目前這個機制在整個微軟提供的bot framework解決方案中,是屬於 LUIS 的功能。 而MS提供的這整個bot framework,則是一個範圍很廣的開發框架(其實嚴格說起來不只是框架了,以LUIS來說,它其實是一個獨立的Web服務),這整套框架和服務,讓Developer可以用比較簡便的方式,建立一個能與終端用戶(end-user)對話的虛擬人物,範疇包括取得用戶輸入的語句訊息、判斷用戶的語意、決定機器人要說的訊息、呈現程式判斷後要輸出的訊息,以及整個開發的程式碼骨架…等等。 使用bot framework的好處在於,開發人員不需要再自行建立自己的對話介面,bot framework提供了一個asp.net的專案範本(其實本質上是一個asp.net WebApi專案),讓你可以輕鬆的開始撰寫訊息對談引擎。 該範本可以從 這裡 取得,可以參考這邊的使用方式說明: http://docs.botframework.com/connector/getstarted/#overview 除了訊息對談引擎之外,這個對談機器人(Chat bot)當然還需要一個與用戶對談的操作介面,bot framework選擇的方式,是透過bot c...

Azure Remote App (2) - 建立你自己的Collection

圖片
對企業來說,穩定的價值遠大於新潮時髦的技術與介面…不幸的是,對升遷來說,就不一定是… 使用RemoteApp這樣的功能,最常見的情境是把自己開發的傳統Desktop應用程式發佈給企業(或外部)的用戶來使用,也有少數的情況是把Office Word/Excel之類的應用程式發佈給特定的用戶使用。 要達成這樣的效果,首先,你必須先建立一個VM。該VM有一些要求,細節你可以參考底下這裡: https://azure.microsoft.com/zh-tw/documentation/articles/remoteapp-imageoptions/ 而最簡單的方式,就是採用既有的範本來建立這個VM,你可以使用底下這兩個範本(重點在於它已經安裝了遠端桌面工作階段主機 (RDSH): 建立好該VM之後,你要先把你想發佈給用戶使用的desktop application安裝上去,幾乎絕大部分的應用程式(只要能裝的上去VM且正常執行),就可以發佈給用戶來使用,需要注意的細節在這裡: https://azure.microsoft.com/zh-tw/documentation/articles/remoteapp-appreqs/ 如果你是安裝透過.NET開發的WPF/Windows應用程式,隨便裝在哪一個目錄下都行,我習慣安裝在根目錄,留意未來當你發佈給用戶使用時,可能會同時有個用戶執行這個程式,因此,與用戶有關的個人資料的儲存,最好不要透過實體硬碟來儲存,可以用.NET中的IsolatedStorage來做儲存相對比較理想。 當你把特定的Windows應用程式安裝在該Azure VM上之後,可以用不同的帳號透過RDP執行看看,如果能正常執行,大致上就沒問題了。 準備好VM之後,我們要把VM變成適合RemoteApp Collection用的Image,你應該會在桌面上看到一個圖示: ‘ 執行它,最後按下Y,Enter。這會將這台VM變成適合RemoteApp Collection的Image: 完成Sysprep之後,請把該VM擷取成Image: 擷取完成之後,你的VM會消失,並且在Image下找到: 接著,我們到RemoteApp畫面,把剛才的VM Image變成RemoteApp 範本Image: 將VM Image匯入: 這個匯入動...

Azure Remote App (1) - 在iPad/iPhone上執行Windows/WPF應用程式?

圖片
主流和非主流,有時候只是時間的差異… 故事是這樣的,2003年開始,我們寫了非常多的Web應用程式,對,那一年是ASP.NET 1.1剛出來的時候。接著,從2005年ASP.NET 2.0出現之後,這種現象完全沒有退燒的趨勢,台灣有一段時間大家卯起來寫Web應用程式,不論是ERP、CRM還是什麼想的出來的企業應用,通通企圖改寫成Web,當時,這絕對是一種潮流… 不過,企業中有太多太多的應用,不可能通通透過Web的方式來實現(一直到現在都是如此…)。因此,還是有很多很小或很大的應用程式,是透過傳統的Windows/WPF方式來開發的。 然後,突然有一天,iPad/iPhone幾乎佔領了台灣高階主管的世界,居於企業核心地位的高階主管們,完全聽不懂(不想聽懂)為何iPad無法執行Windows/WPF應用程式,他心裡的iPad…是無敵的… 詭異的需求,常常就是這樣來的。 所幸高階主管們其實不太key-in,他們擅長做的事,需要用的應用程式,大多都是滑鼠點點點就可以搞定的。 而企業內IT人員的天職就是滿足具有無窮想像力的高階用戶的各種期待…iPad上怎麼運行WPF應用程式呢? 答案當然是,不可能。 就算是也是假的…但假的只要能夠用,也並非不是個辦法… 所以…azure remote app出現了。 原本我覺得這東西有點OOXX,但沒想到經過幾次耐不住客戶要求在iPad上運行傳統windows應用程式的需求之後,實際捲起袖子用了一會兒,發現它也並非難登大雅之堂。畢竟在iPad上能夠看到Windows應用程式(看似)變成一個App,還可以點點點,完成需要執行的工作,其實也還挺不錯的。 Azure Remote App Azure Remote App是啥呢? 他是Azure中的一個服務,基本上就是一台VM,然後讓iPad(包含iPhone/Android/Windows 7,8, 9 ,10 ,11 或其他設備)透過遠端桌面連線的方式連上,去運行VM上的某一個Application的技術。 一點都不新潮。 但,還真的能用。 如果你下載了最新版在iPad上的RDP遠端桌面連線,會發現新增的選單裡,有一個Azure RemoteApp的選項: 點選該選項之後,你可以用Azure AD組織帳號或Microsoft Account(像是hotmail帳號)...