Teams Bot App Manifest 文件解析

這篇文章我們繼續以 Hello World Bot 這個 sample 來講一下 manifest template。

實際上在 Teams app 開發的時候,有 manifest 的概念,manifest 是用來說明這個 teams app 的一些基本信息和配置信息,比如 app 的名字,app有哪些能力,app 的bot id是多少。具體的 manifest 的 schema 可以參考這個官方文檔?Manifest schema reference - Teams | Microsoft Learn?,我會在以后的文章里詳細介紹 manifest 的每一塊每一個細節。

但是傳統的 Teams app 開發里沒有 manifest template 的概念,這個template 是 Teams Toolkit 里的概念。為什么需要一個 template 呢?因為我們一般的開發流程和開發周期需要幾個環境,比如開發環境,測試環境,UAT環境,生產環境。在不同的環境里,我們會有不同的 app 設置,比如 bot id 是不同的,可能這些環境共用一個M365 tenant,但為了區分會使用不同的 app 名字,比如開發環境的叫?MyBot-dev,在uat環境的可能叫?MyBot-uat,所以需要有不同的 manifest 文件,但是這些 manifest 文件里又有很多部分會很相似。

所以 Teams Toolkit 為了解決這個問題,加入了 manifest template 的概念,我們來看一下 template 文件?manifest.template.json?里面是怎么寫的。

{"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.14/MicrosoftTeams.schema.json","manifestVersion": "1.14","version": "1.0.0","id": "","packageName": "com.microsoft.teams.extension","developer": {"name": "Teams App, Inc.","websiteUrl": "https://www.example.com","privacyUrl": "https://www.example.com/privacy","termsOfUseUrl": "https://www.example.com/termsofuse"},"icons": {"color": "resources/color.png","outline": "resources/outline.png"},"name": {"short": "","full": ""},"description": {"short": "Short description of ","full": "Full description of "},...
}

我們可以看到文件里面使用了?來表明一個 placeholder,這些 placeholder 又分為兩大類,分別是?和 ``,他們實際上是對應了?.fx?目錄里的兩類文件。

對于 local 環境,有對應的 config.local.json 和 state.local.json 文件,state 文件是在運行后自己生成的。我們來看一下 config.local.json 文件的內容。

{"$schema": "https://aka.ms/teamsfx-env-config-schema","description": "You can customize the TeamsFx config .....","manifest": {"appName": {"short": "HelloWorldBot-local-debug","full": "Full name for HelloWorldBot-local-debug"}}
}

回到前面的一個 placeholder ``,對照上面的 config 文件內容,我們可以知道,這個placeholder,將被值?HelloWorldBot-local-debug?所替換。我們找到替換后的生成的最終 manifest 文件:?/build/appPackage/manifest.local.json

...
"name": {"short": "HelloWorldBot-local-debug","full": "Full name for HelloWorldBot-local-debug"
},
"description": {"short": "Short description of HelloWorldBot-local-debug","full": "Full description of HelloWorldBot-local-debug"
},
...

state 的 placeholder 也類似,我們可以在?state.xxx.json?里找到對應的值。不同的是,state 文件是 teams toolkit自動生成的,所以如果我們自己需要增加一些不同環境不同的配置,我們要使用 config,而不是 state。

好,我們來改一個試試看,打開?manifest.template.json?文件,把 websiteUrl 改成如下的placeholder ``

    "developer": {"name": "Teams App, Inc.","websiteUrl": "","privacyUrl": "https://www.example.com/privacy","termsOfUseUrl": "https://www.example.com/termsofuse"},

然后我們在 config.local.json 文件中加入 website。

{..."manifest": {"appName": {...},"website": "https://mysite-local.com"}
}

然后我們在dev環境的 config.dev.json 文件中加入對應的 website。

{..."manifest": {"appName": {...},"website": "https://mysite-dev.com"}
}

運行一下我們的app,這樣 Teams Toolkit 會重新生成一個 manifest json 文件。打開新生成的?/build/appPackage/manifest.local.json,可以看到 website 就是我們在?config.local.json?里配置的。

...
"developer": {"websiteUrl": "https://mysite-local.com",....
},
...

前面我們講了好幾個文件,可能有點暈,我們用一張圖來總結。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277814.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Dart] Flutter開發中的幾個常用函數

幾個Flutter開發中的常用函數 /** 返回當前時間戳 */static int currentTimeMillis() {return new DateTime.now().millisecondsSinceEpoch;}/** 復制到剪粘板 */static copyToClipboard(final String text) {if (text null) return;Clipboard.setData(new ClipboardData(text…

Cordova入門系列(三)Cordova插件調用 轉發 https://www.cnblogs.com/lishuxue/p/6018416.html...

Cordova入門系列(三)Cordova插件調用 版權聲明:本文為博主原創文章,轉載請注明出處 上一章我們介紹了cordova android項目是如何運行的,這一章我們介紹cordova的核心內容,插件的調用。演示一個例子&#xf…

clojure with postgres

主要關注訪問pg。不關心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbchttp://clojure-doc.org/articles/ecosystem/java_jdbc/reusing_connections.html這個最廣,需要配合不同DB[org.clojure/java.jdbc "0.7.9"] [org.postgresql/pos…

lua入門

https://en.blog.nic.cz/2015/08/12/embedding-luajit-in-30-minutes-or-so/

shell腳本傳可選參數 getopts 和 getopt的方法

寫了一個shell腳本,需要向shell腳本中傳參數供腳本使用,達到的效果是傳的參數可以是可選參數 下面是一個常規化的shell腳本: echo "執行的文件名為: $0";echo "第一個參數名為: $1";echo "第二個參數名為: $2"…

Teams Tab App 代碼深入淺出 - 配置頁面

上一篇文章我們使用Teams Toolkit 來創建、運行 tab app。這篇文章我們深入來分析看一下tab app 的代碼。 先打開代碼目錄,可以看到在 src 目錄下有入口文件 index.tsx,然后在 components 目錄下有更多的一些 tsx 文件,tsx 是 typescript的一…

labelme標注的json文件數據轉成coco數據集格式(可處理目標框和實例分割)

這里主要是搬運一下能找到的 labelme標注的json文件數據轉成coco數據集格式(可處理目標框和實例分割)的代碼,以供需要時參考和提供相關幫助。 1、官方labelme實現 如下是labelme官方網址,提供了源代碼,以及相關使用方…

EpSON TM-82II驅動在POS系統上面安裝問題處理

按照品牌名稱,在網上下載的安裝包為apstmt82.rar 下面講解一下,如何的解決愛普生打印機在POS機器上面的安裝問題,這個算是一個比較奇特的故障問題,不像其它的新北冰洋(SN3C)的U80_U80II,SeNor的…

打印圖片的屬性和實現另存圖片功能以及使用numpy

上一篇我們已經學了如何讀取圖片的功能了以及和opencv的環境搭建了,今天接著來學習,哈哈哈,今天剛好五一,也沒閑著,繼續學習。 1、 首先我們來實現打印出圖片的一些屬性功能, 先來看一段代碼: 1…

Ubuntu 18.04下命令安裝VMware Tools

2019獨角獸企業重金招聘Python工程師標準>>> sudo apt-get upgrade sudo apt-get install open-vm-tools-desktop -y sudo reboot 轉載于:https://my.oschina.net/u/574036/blog/1829455

phpstorm PHP language level無法選擇

phpstorm PHP7新特性一直提示紅色波浪線,應該是沒有設置PHP 版本,但是打開PHPstorm---preference--lannguage&frameworks--PHP , 發現PHP language level 無法選擇PHP7.2 ,查看旁邊的提示信息說是同步了composer 的原因&#…

Qfile

打開方式: 1 void AddStudents::write_to_file(QString src){2 QFile file("stu.txt");3 if (!file.open(QIODevice::Append | QIODevice::Text)){4 QMessageBox::critical(this,"打開文件錯誤","確認");5 r…

多層裝飾器、帶參數裝飾器

# 帶參數的裝飾器 # import time # FLAGE False # 加個標志位,使全部的裝飾器可以失效或有效 # def timmer_out(flag): # def timmer(func): # def inner(*args,**kwargs): # if flag: # start time.time() # …

IDEA svn 菜單不見了,解決方法

2019獨角獸企業重金招聘Python工程師標準>>> 參考地址: http://www.cnblogs.com/signheart/p/193448a98f92bd0cc064dbd772dd9f48.html,我是第二種方法解決的! 轉載于:https://my.oschina.net/liuchangng/blog/1829679

蘇寧易購:Hadoop失寵前提是出現更強替代品

在筆者持續調研國內Hadoop生態系統生存現狀的同時,KDnuggets發布的2018年數據科學和機器學習工具調查報告再次將“Hadoop失寵”言論復活。報告一出,“Hadoop被拋棄”幾個字瞬時成為各大標題黨的最愛,充斥在不同的新聞平臺。這些報告和數據是否…

VS2017生成一個簡單的DLL文件 和 LIB文件——C語言

下面我們將用兩種不同的姿勢來用VS2017生成dll文件(動態庫文件)和lib文件(靜態庫文件),這里以C語言為例,用最簡單的例子,來讓讀者了解如何生成dll文件(動態庫文件) 生成動…

Hive數據類型及文本文件數據編碼

本文參考Apache官網,更多內容請參考:https://cwiki.apache.org/confluence/display/Hive/LanguageManualTypes 1. 數值型 類型支持范圍TINYINT1-byte signed integer, from -128 to 127SMALLINT2-byte signed integer, from -32,768 to 32,767INT/INTEGE…

Python繪圖Turtle庫詳解

轉載:https://blog.csdn.net/zengxiantao1994/article/details/76588580 Turtle庫是Python語言中一個很流行的繪制圖像的函數庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令…

(待完成)qbxt2019.05 總結2 - 數位DP

數位 DP 嚴格來說其實并不是 DP……它只是個單純的計數問題 但是怎么說呢……現在大家似乎都把數位 DP 叫這個名字,所以……我們還是……叫它 DP 額什么是數位 DP 呢? 一句話概括——一類求在 K 進制下m滿足條件的數的數量有多少個的算法 常見的問題形式…

mac使用brew update無反應解決辦法

為什么80%的碼農都做不了架構師?>>> mac系統中使用brew作為包管理工具,類似centos中的yum,ubuntu中的apt-get,在使用brew update的使用,有時候會長時間無反應,或者中途斷開連接,這是…