diff --git a/libraries/botbuilder-ai/microsoft/__init__.py b/libraries/botbuilder-ai/microsoft/__init__.py deleted file mode 100644 index de40ea7ca..000000000 --- a/libraries/botbuilder-ai/microsoft/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/libraries/botbuilder-ai/microsoft/botbuilder/__init__.py b/libraries/botbuilder-ai/microsoft/botbuilder/__init__.py deleted file mode 100644 index de40ea7ca..000000000 --- a/libraries/botbuilder-ai/microsoft/botbuilder/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/libraries/botbuilder-ai/microsoft/botbuilder/ai/__init__.py b/libraries/botbuilder-ai/microsoft/botbuilder/ai/__init__.py deleted file mode 100644 index 5f9042700..000000000 --- a/libraries/botbuilder-ai/microsoft/botbuilder/ai/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# coding=utf-8 -#------------------------------------------------------------------------ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#------------------------------------------------------------------------ - -from .language_map import LanguageMap -from .qna_maker import QnAMaker, QnAMakerOptions, MetaData, QueryResult, QueryResults - -__all__ = ['LanguageMap', - 'QnAMaker', - 'QnAMakerOptions', - 'MetaData', - 'QueryResult', - 'QueryResults'] diff --git a/libraries/botbuilder-ai/microsoft/botbuilder/ai/language_map.py b/libraries/botbuilder-ai/microsoft/botbuilder/ai/language_map.py deleted file mode 100644 index f74fd02b7..000000000 --- a/libraries/botbuilder-ai/microsoft/botbuilder/ai/language_map.py +++ /dev/null @@ -1,541 +0,0 @@ -# coding=utf-8 -#------------------------------------------------------------------------ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#------------------------------------------------------------------------ - -class LanguageMap: - codes_to_names: dict = {} - names_to_codes: dict = {} - names_to_names: dict = {} - - - def __init__(self): - self.add("ar", "Arabic") - self.add("bs-Latn", "Bosnian") - self.add("bg", "Bulgarian") - self.add("ca", "Catalan") - self.add("zh-CHS", "Chinese Simplified") - self.add("zh-CHT", "Chinese Traditional") - self.names_to_names["Chinese"] = ["Simplified", "Traditional"] - - self.add("hr", "Croatian") - self.add("cs", "Czech") - self.add("da", "Danish") - self.add("nl", "Dutch") - self.add("en", "English") - self.add("et", "Estonian") - self.add("fi", "Finnish") - self.add("fr", "French") - self.add("de", "German") - - self.add("el", "Greek") - self.add("ht", "Haitian Creole") - self.names_to_codes["Creole"] = "ht" - self.add("he", "Hebrew") - self.add("hi", "Hindi") - self.add("mww", "Hmong Daw") - self.names_to_codes["Hmong"] = "mww" - self.names_to_codes["Daw"] = "mww" - - self.add("hu", "Hungarian") - self.add("id", "Indonesian") - self.add("it", "Italian") - self.add("ja", "Japanese") - self.add("sw", "Kiswahili") - self.add("ko", "Korean") - self.add("tlh", "Klingon") - self.add("lv", "Latvian") - self.add("lt", "Lithuanian") - self.add("ms", "Malay") - self.add("mt", "Maltese") - self.add("no", "Norwegian") - self.add("fa", "Persian") - self.add("pl", "Polish") - self.add("pt", "Portuguese") - self.add("otq", "Querétaro Otomi") - self.names_to_codes["Querétaro"] = "otq" - self.names_to_codes["Otomi"] = "otq" - - self.add("ro", "Romanian") - self.add("ru", "Russian") - self.add("sr-Cyrl", "Serbian Cyrillic") - self.add("sr-Latn", "Serbian Latin") - self.names_to_names["Serbian"] = [{"Cyrillic", "Latin"}] - - self.add("sk", "Slovak") - self.add("sl", "Slovenian") - self.add("es", "Spanish") - self.add("sv", "Swedish") - self.add("th", "Thai") - self.add("tr", "Turkish") - self.add("uk", "Ukrainian") - self.add("ur", "Urdu") - self.add("vi", "Vietnamese") - self.add("cy", "Welsh") - self.add("yua", "Yucatec Maya") - self.names_to_codes["yucatec"] = "yua" - self.names_to_codes["maya"] = "yua" - - def add(self, code: str, name: str): - self.codes_to_names[code] = name - self.names_to_codes[name] = code - - def get_code_for_input(self, values): - for val in values: - if val in self.names_to_codes: - return val - if val in self.names_to_names: - for name in self.names_to_names[val]: - second_val = values[val] - if second_val: - return self.try_compound(val, second_val) - return None - - def get_code_or_fall_back(self, code: str): - if code and not code.isspace(): - return "en" - code.strip() - if code in self.codes_to_names: - return code - return "en" - - def try_compound(self, first_val:str, second_val:str): - compound = "{} {}".format(first_val, second_val) - if self.names_to_codes.get(self, compound): - return True - compound = "{} {}".format(second_val, first_val) - if self.names_to_codes.get(self, compound): - return True - return False - - # names for languages in all languages - names: list = [ - "العربية", "البوسنية", "البلغارية", "الكتالانية", - "الصينية المبسطة", "الصينية التقليدية", "الكرواتية", "التشيكية", "الدانماركية", - "الهولندية", "الإنكليزية", "الإستونية", "الفنلندية", "الفرنسية", - "الألمانية", "اليونانية", "هايتي", "العبرية", "الهندية", - "داو الهمونغ", "المجرية", "الإندونيسية", "الإيطالية", "اليابانية", - "اللغة السواحيلية", "الكورية", "الكلينجون", "اللاتفية", "الليتوانية", - "الماليزية", "المالطية", "النرويجية ‏", "فارسي", "البولندية", - "البرتغالية", "ولاية كويريتارو اوتومي", "الرومانية", "الروسية", "اللغة السيريلية الصربية", - "الصربية اللاتينية", "السلوفاكية", "السلوفينية", "الإسبانية", "السويدية", - "التايلندية", "التركية", "الأوكرانية", "الأوردية", "الفيتنامية", - "الويلزية", "يوكاتيك مايا", "arapski", "bosanski", "bugarski", - "katalonski", "pojednostavljeni kineski", "tradicionalni kineski", "hrvatski", "češki", - "danski", "nizozemski", "engleski", "estonski", "finski", - "francuski", "njemački", "grčki", "haićanski kreolski", "hebrejski", - "hindi", "hmong daw", "mađarski", "indonezijski", "talijanski", - "japanski", "kiswahili", "korejski", "klingonski", "latvijski", - "litvanski", "malajski", "malteški", "norveški", "perzijski", - "poljski", "portugalski", "querétaro otomi", "rumunjski", "ruski", - "ćir", "srpski latinski", "slovački", "slovenski", "španjolski", - "švedski", "tajlandski", "turski", "ukrajinski", "urdu", - "vijetnamski", "velški", "jukatanskih maja", "арабски", "босняшки", - "български", "каталонски", "опростен китайски", "традиционен китайски", "хърватски", - "чешки", "датски", "холандски", "английски", "естонски", - "финландски", "френски", "немски", "гръцки", "хаитянски", - "иврит", "хинди", "хмонг daw", "унгарски", "индонезийски", - "италиански", "японски", "корейски", "клингонската", "латвийски", - "литовски", "малайски", "малтийски", "норвежки", "персийски", - "полски", "португалски", "керетаро otomi", "румънски", "руски", - "сръбската кирилица", "сръбската латинска", "словашки", "словенски", "испански", - "шведски", "тайландски", "турски", "украински", "урду", - "виетнамски", "уелски", "yucatec мая", "àrab", "bosnià", - "búlgar", "català", "xinès simplificat", "xinès tradicional", "croat", - "txeca", "danès", "neerlandès", "anglès", "estonià", - "finlandesa", "francès", "alemany", "grec", "crioll haitià", - "hebreu", "hindi", "ètnia hmong que daw", "hongarès", "indonèsia", - "italià", "japonès", "coreà", "klingon", "letònia", - "lituà", "malai", "maltès", "noruec", "persa", - "polonès", "portuguès", "querétaro otomí", "romanès", "rus", - "serbi", "serbi llatí", "eslovac", "eslovè", "castellà", - "suec", "tailandès", "turc", "ucraïnès", "urdú", - "vietnamita", "gal·lès", "del segle xvi maya", "阿拉伯语", "波斯尼亚语", - "保加利亚语", "加泰隆语", "简体中文", "繁体中文", "克罗地亚语", - "捷克语", "丹麦语", "荷兰语", "英语", "爱沙尼亚语", - "芬兰语", "法语", "德语", "希腊语", "海地克里奥尔语", - "希伯来语", "印地语", "苗族人昂山", "匈牙利语", "印度尼西亚语", - "意大利语", "日语", "斯瓦希里语", "朝鲜语", "克林贡语", - "拉脱维亚语", "立陶宛语", "马来语", "马耳他语", "挪威语", - "波斯语", "波兰语", "葡萄牙语", "克雷塔罗乙巳", "罗马尼亚", - "俄语", "塞尔维亚西里尔文", "塞尔维亚语-拉丁文", "斯洛伐克语", "斯洛文尼亚语", - "西班牙语", "瑞典语", "泰语", "土耳其语", "乌克兰语", - "乌都语", "越南语", "威尔士语", "尤卡坦玛雅", "阿拉伯文", - "波士尼亞文", "保加利亞文", "加泰隆語", "簡體中文", "繁體中文", - "克羅地亞語", "捷克文", "丹麥文", "荷蘭文", "英語", - "愛沙尼亞文", "芬蘭文", "法語", "德語", "希臘文", - "海地克裡奧爾語", "希伯來文", "印度文", "匈牙利文", "印尼語", - "義大利文", "日語", "史瓦希里文", "朝鮮語", "克林貢語", - "拉脫維亞文", "立陶宛文", "馬來文", "馬爾他文", "挪威語", - "波斯文", "波蘭文", "葡萄牙文", "克雷塔羅乙巳", "羅馬尼亞", - "俄語", "塞爾維亞西瑞爾文", "塞爾維亞文-拉丁文", "斯洛伐克文", "斯洛維尼亞文", - "西班牙文", "瑞典文", "泰語", "土耳其文", "烏克蘭文", - "烏都語", "越南文", "威爾斯文", "尤卡坦瑪雅", "srpska ćirilica", - "srpski latinica", "jukatanskih maja", "arabština", "bosenština", "bulharština", - "katalánština", "zjednodušená čínština", "tradiční čínština", "chorvatština", "čeština", - "dánština", "holandština", "angličtina", "estonština", "finština", - "francouzština", "němčina", "řečtina", "haitská kreolština", "hebrejština", - "hindština", "maďarština", "indonéština", "italština", "japonština", - "korejština", "klingonská", "lotyština", "litevština", "malajština", - "maltština", "norština", "perština", "polština", "portugalština", - "rumunština", "ruština", "srbské cyrilici", "srbský (latinka)", "slovenština", - "slovinština", "španělština", "švédština", "thajština", "turečtina", - "ukrajinština", "urdština", "vietnamština", "velština", "yucatec maya", - "arabisk", "bosnisk", "bulgarsk", "catalansk", "kinesisk, forenklet", - "kinesisk, traditionelt", "kroatisk", "tjekkisk", "dansk", "nederlandsk", - "engelsk", "estisk", "finsk", "fransk", "tysk", - "græsk", "haitiansk", "hebraisk", "ungarsk", "indonesisk", - "italiensk", "japansk", "koreansk", "lettisk", "litauisk", - "malaysisk", "maltesisk", "norsk", "persisk", "polsk", - "portugisisk", "rumænsk", "russisk", "serbisk kyrillisk", "serbisk latin", - "slovakisk", "slovensk", "spansk", "svensk", "thai", - "tyrkisk", "ukrainsk", "vietnamesisk", "walisisk", "arabisch", - "bosnisch", "bulgaars", "catalaans", "vereenvoudigd chinees", "traditioneel chinees", - "kroatisch", "tsjechisch", "deens", "nederlands", "engels", - "estisch", "fins", "frans", "duits", "grieks", - "haïtiaans", "hebreeuws", "hongaars", "indonesisch", "italiaans", - "japans", "koreaans", "lets", "litouws", "maleis", - "maltees", "noors", "perzisch", "pools", "portugees", - "roemeens", "russisch", "servisch", "servisch-latijn", "slowaaks", - "sloveens", "spaans", "zweeds", "thais", "turks", - "oekraïens", "urdu", "vietnamees", "welsh", "yucateeks maya", - "arabic", "bosnian", "bulgarian", "catalan", "chinese simplified", - "chinese traditional", "croatian", "czech", "danish", "dutch", - "english", "estonian", "finnish", "french", "german", - "greek", "haitian creole", "hebrew", "hungarian", "indonesian", - "italian", "japanese", "korean", "latvian", "lithuanian", - "malay", "maltese", "norwegian", "persian", "polish", - "portuguese", "romanian", "russian", "serbian cyrillic", "serbian latin", - "slovak", "slovenian", "spanish", "swedish", "thai", - "turkish", "ukrainian", "vietnamese", "araabia", "bosnia", - "bulgaaria", "katalaani", "lihtsustatud hiina", "traditsiooniline hiina", "horvaadi", - "tšehhi", "taani", "hollandi", "inglise", "eesti", - "soome", "prantsuse", "saksa", "kreeka", "haiiti kreooli", - "heebrea", "hmongi daw", "ungari", "indoneesia", "itaalia", - "jaapani", "suahiili", "korea", "klingoni", "läti", - "leedu", "malta", "norra", "pärsia", "poola", - "portugali", "rumeenia", "vene", "serbia keel kirillitsas", "serbia keel ladina tähestikus", - "slovaki", "sloveeni", "hispaania", "rootsi", "tai", - "türgi", "ukraina", "vietnami", "kõmri", "arabia", - "bosnia", "bulgaria", "katalaani", "yksinkertaistettu kiina", "perinteinen kiina", - "kroaatti", "tšekki", "tanska", "hollanti", "englanti", - "viro", "suomi", "ranska", "saksa", "kreikka", - "haitin kieli", "heprea", "unkari", "indonesia", "italia", - "japani", "korea", "latvia", "liettua", "malaiji", - "malta", "norja", "persia", "puola", "portugali", - "romania", "venäjä", "serbian kyrilliset", "serbialainen latinalainen", "slovakki", - "sloveeni", "espanja", "ruotsi", "turkki", "ukraina", - "vietnam", "kymri (wales)", "suomen maya", "arabe", "bosniaque", - "bulgare", "chinois simplifié", "chinois traditionnel", "croate", "tchèque", - "danois", "néerlandais", "anglais", "estonien", "finnois", - "français", "allemand", "haïtien", "hébreu", "hongrois", - "indonésien", "italien", "japonais", "coréen", "letton", - "lituanien", "malaisien", "maltais", "norvégien", "perse", - "polonais", "portugais", "roumain", "russe", "en serbe cyrillique", - "serbe latin", "slovaque", "slovène", "espagnol", "suédois", - "thaï", "ukrainien", "vietnamien", "gallois", "maya yucatèque", - "bulgarisch", "katalanisch", "chinesisch (vereinfacht)", "chinesisch (traditionell)", "tschechisch", - "dänisch", "holländisch", "englisch", "estnisch", "finnisch", - "französisch", "deutsch", "griechisch", "haitianisch", "hebräisch", - "ungarisch", "italienisch", "japanisch", "koreanisch", "klingonische", - "lettisch", "litauisch", "malaiisch", "maltesisch", "norwegisch", - "persisch", "polnisch", "portugiesisch", "querétaro otomí", "rumänisch", - "serbisch-kyrillisch", "serbischer latein", "slowakisch", "slowenisch", "spanisch", - "schwedisch", "thailändisch", "türkisch", "ukrainisch", "vietnamesisch", - "walisisch", "yukatekisches maya", "αραβικά", "βοσνιακά", "βουλγαρικά", - "καταλανικά", "απλοποιημένα κινεζικά", "παραδοσιακά κινεζικά", "κροατικά", "τσεχικά", - "δανικά", "ολλανδικά", "αγγλικά", "εσθονικά", "φινλανδικά", - "γαλλικά", "γερμανικά", "ελληνικά", "γλώσσα αϊτής", "εβραϊκά", - "χίντι", "ουγγρικά", "ινδονησιακά", "ιταλικά", "ιαπωνικά", - "κισουαχίλι", "κορεατικά", "κλίνγκον", "λετονικά", "λιθουανικά", - "μαλαϊκά", "μαλτεζικά", "νορβηγικά", "περσικά", "πολωνικά", - "πορτογαλικά", "ρουμανικά", "ρωσικά", "σερβικά κυριλλικά", "σέρβικα-λατινικά", - "σλοβακικά", "σλοβενικά", "ισπανικά", "σουηδικά", "ταϊλανδικά", - "τουρκικά", "ουκρανικά", "ουρντού", "βιετναμικά", "ουαλλικά", - "μάγια του γιουκατάν", "arabik", "bosnyen", "bilgari", "chinwa senplifye", - "chinwa tradisyonèl", "kwoasyen", "tchekoslovaki", "danwa", "olandè", - "angle", "estoni", "fenlandè", "fwansè", "alman", - "grèk", "kreyòl ayisyen", "ebre", "lang peyi lend", "montayn hmong daw", - "ongaryen", "endonezi", "italyen", "japonè", "koreyen", - "lettonie", "malais", "malte", "nòvejyen", "pèsyann", - "lapolòy", "pòtigè", "romanyen", "wis", "lettre sèb", - "latin sèb", "sloveni", "panyòl", "syedwa", "pon zanmitay tayilandè", - "tik", "ikrenyen", "oudou", "vyètnamyen", "ערבית", - "בוסנית", "בולגרית", "קטלונית", "סינית פשוטה", "סינית מסורתית", - "קרואטית", "צ\'כית", "דנית", "הולנדית", "אנגלית", - "אסטונית", "פינית", "צרפתית", "גרמנית", "יוונית", - "האיטית", "עברית", "הינדי", "המונג דאו", "הונגרית", - "אינדונזית", "איטלקית", "יפנית", "בסווהילי", "קוריאנית", - "קלינגונית", "לטבית", "ליטאית", "מלאית", "מלטית", - "נורווגית", "פרסית", "פולנית", "פורטוגזית", "רומנית", - "רוסית", "סרבית קירילית", "סרבית לטינית", "סלובקית", "סלובנית", - "ספרדית", "שוודית", "תאילנדית", "טורקית", "אוקראינית", - "אורדו", "וייטנאמית", "וולשית", "מאיה yucatec", "अरबी", - "बोस्नियाई", "बल्गारिया", "कातलान", "चीनी सरलीकृत", "चीनी पारंपरिक", - "क्रोएशियाई", "चेक", "डैनिश", "डच", "अंग्रेज़ी", - "एस्टोनियाई", "फ़िनिश", "फ़्रेंच", "जर्मन", "यूनानी", - "हाईटियन क्रियोल", "हिब्रू", "हिंदी", "हमोंग काला कौवा", "हंगेरियन", - "इंडोनेशियाई", "इटैलियन", "जापानी", "किस्वाहिली", "कोरियाई", - "क्लिंगन", "लातवियाई", "लिथुआनियाई", "मलय", "माल्टीज़", - "नॉर्वेजियन", "फ़ारसी", "पोलिश", "पुर्तगाली", "रोमानियाई", - "रूसी", "सर्बियन सिरिलिक", "सर्बियन लैटिन", "स्लोवाक", "स्लोवेनियाई", - "स्पैनिश", "स्वीडिश", "थाई", "तुर्की", "यूक्रेनियाई", - "उर्दू", "वियतनामी", "वेल्श", "युकाटेक माया", "suav yooj yim zog", - "nws yog tshuaj hmoob suav", "lus askiv", "fabkis", "lus", "hmoob daw", - "lavxias teb sab", "mev", "thaib", "nyab laj", "arab", - "boszniai", "bolgár", "katalán", "kínai (egyszerűsített)", "kínai (hagyományos)", - "horvát", "cseh", "dán", "holland", "angol", - "észt", "finn", "francia", "német", "görög", - "haiti kreol", "héber", "magyar", "indonéz", "olasz", - "japán", "koreai", "lett", "litván", "maláj", - "máltai", "norvég", "perzsa", "lengyel", "portugál", - "román", "orosz", "szerb", "szerb latin", "szlovák", - "szlovén", "spanyol", "svéd", "török", "ukrán", - "vietnami", "walesi", "török", "arab", "bulgaria", - "cina sederhana", "cina tradisional", "kroasia", "ceko", "denmark", - "belanda", "inggris", "estonia", "finlandia", "prancis", - "jerman", "yunani", "bahasa kreol haiti", "ibrani", "hongaria", - "indonesia", "italia", "jepang", "latvia", "lithuania", - "melayu", "norwegia", "farsi", "polandia", "portugis", - "rumania", "rusia", "bahasa sirilik", "serbia latin", "slovakia", - "slovenia", "spanyol", "swedia", "turki", "vietnam", - "arabo", "bosniaco", "bulgaro", "catalano", "cinese semplificato", - "cinese tradizionale", "croato", "ceco", "danese", "olandese", - "inglese", "estone", "finlandese", "francese", "tedesco", - "greco", "haitiano", "ebraico", "ungherese", "indonesiano", - "italiano", "giapponese", "coreano", "lettone", "lituano", - "malese", "norvegese", "polacco", "portoghese", "rumeno", - "russo", "alfabeto cirillico serbo", "serbo latino", "slovacco", "sloveno", - "spagnolo", "svedese", "tailandese", "turco", "ucraino", - "gallese", "maya yucateco", "アラビア語", "ボスニア語", "ブルガリア語", - "カタロニア語", "簡体字中国語", "繁体字中国語", "クロアチア語", "チェコ語", - "デンマーク語", "オランダ語", "エストニア語", "フィンランド語", "フランス語", - "ドイツ語", "ギリシャ語", "ハイチ語", "ヘブライ語", "ヒンディー語", - "もん族 daw", "ハンガリー語", "インドネシア語", "イタリア語", "日本語", - "スワヒリ語", "韓国語", "クリンゴン語", "ラトビア語", "リトアニア語", - "マレー語", "マルタ語", "ノルウェー語", "ペルシャ語", "ポーランド語", - "ポルトガル語", "ケレタロ大富", "ルーマニア語", "ロシア語", "セルビア語キリル文字", - "セルビア語ラテン語", "スロバキア語", "スロベニア語", "スペイン語", "スウェーデン語", - "タイ語", "トルコ語", "ウクライナ語", "ウルドゥ語", "ベトナム語", - "ウェールズ語", "ユカテク語マヤ", "kiarabu", "kibosnia", "kibulgaria", - "kikatalan", "kichina rahisi", "kichina cha zamani", "kikroashia", "kicheki", - "kidanishi", "kiholanzi", "kiingereza", "kiestonia", "kifinishi", - "kifaransa", "kijerumani", "kigiriki", "kikrioli cha haiti", "kiebrania", - "kihindi", "kihangaria", "kiindoneshia", "kiitaliano", "kijapani", - "kikorea", "kilatvia", "kilithuania", "kimalay", "kimalta", - "kinowiji", "kipersia", "kipolishi", "kireno", "kirumi", - "kirusi", "kisirili kiserbia", "kilatini kiserbia", "kislovaki", "kislovenia", - "kihispania", "kiswidi", "kithai", "kituruki", "kiukreini", - "kiurdu", "kivietinamu", "kiwelshi", "아랍어", "보스니아어", - "불가리어", "카탈로니아어", "중국어 간체", "중국어 번체", "크로아티아어", - "체코어", "덴마크어", "네덜란드어", "영어", "에스토니아어", - "핀란드어", "프랑스어", "독일어", "그리스어", "아이티어", - "히브리어", "힌디어", "흐몽 어 갈가 마 귀", "헝가리어", "인도네시아어", - "이탈리아어", "일본어", "한국어", "클 링 온", "라트비아어", - "리투아니아어", "말레이어", "몰타어", "노르웨이어", "페르시아어", - "폴란드어", "포르투갈어", "케레타로 otomi", "루마니아어", "러시아어", - "세르비아어 키릴 자모", "세르비아어-라틴", "슬로바키아어", "슬로베니아어", "스페인어", - "스웨덴어", "태국어", "터키어", "우크라이나어", "우르두어", - "베트남어", "웨일스어", "arabic", "bosnian", "bulgarian", - "catalan", "chinese simplified", "chinese potlhmeydaq", "croatian", "czech", - "maghbogh", "dutch", "english hol", "estonian", "finnish", - "french", "german", "greek", "haitian creole", "hebrew", - "hmong daw", "hungarian", "indonesian", "italian", "japanese", - "kiswahili", "korean", "tlhingan", "latvian", "lithuanian", - "malay", "maltese", "norwegian", "persian", "polish", - "portuguese", "querétaro otomi", "romanian", "russian", "serbian cyrillic", - "serbian latin", "slovak", "slovenian", "spanish", "swedish", - "turkish", "ukrainian", "vietnamese", "welsh", "yucatec maya", - "arābu", "bosniešu", "bulgāru", "kataloniešu", "ķīniešu vienkāršotā", - "ķīniešu tradicionālā", "horvātu", "čehu", "dāņu", "holandiešu", - "angļu", "igauņu", "somu", "franču", "vācu", - "grieķu", "haiti kreoliete", "ivrits", "ungāru", "indonēziešu", - "itāliešu", "japāņu", "korejiešu", "latviešu", "lietuviešu", - "malajiešu", "maltiešu", "norvēģu", "persiešu", "poļu", - "portugāļu", "rumāņu", "krievu", "serbu kiriliskā", "serbu latīņu", - "slovāku", "slovēņu", "spāņu", "zviedru", "taju", - "turku", "ukraiņu", "vjetnamiešu", "velsiešu", "arabų", - "bosnių", "bulgarų", "katalonų", "kinų supaprastinta", "kinų tradicinė", - "kroatų", "čekų", "danų", "olandų", "anglų", - "estų", "suomių", "prancūzų", "vokiečių", "graikų", - "haičio kreolų", "hebrajų", "vengrų", "indoneziečių", "italų", - "japonų", "principai", "korėjos", "latvių", "lietuvių", - "malajų", "maltos", "norvegų", "persų", "lenkų", - "portugalų", "rumunų", "rusų", "serbų kirilica", "serbų (lotyniška)", - "slovakų", "slovėnų", "ispanų", "švedų", "tajų", - "turkų", "ukrainiečių", "vietnamiečių", "valų", "jukatekų majų", - "catalonia", "cina ringkas", "croatia", "inggeris", "finland", - "perancis", "kreol haiti", "daw bahasa kantonis", "hungary", "itali", - "jepun", "norway", "parsi", "poland", "romania", - "cyrillic serbia", "latin serbia", "sepanyol", "sweden", "ukraine", - "wales", "għarbi", "bożnijan", "bulgaru", "katalan", - "ċiniż issimplifikat", "ċiniż tradizzjonali", "kroat", "ċeka", "daniż", - "olandiż", "ingliż", "estonjan", "fillandiż", "franċiż", - "ġermaniż", "grieg", "ħajtjan (krejol)", "lhudi", "ħindi", - "ungeriż", "indoneżjan", "taljan", "ġappuniż", "korejan", - "latvjan", "litwan", "mależjan", "malti", "norveġjan", - "persjan", "pollak", "portugiż", "rumen", "russu", - "cyrillic serbi", "latina serbi", "slovakk", "sloven", "spanjol", - "svediż", "tajlandiż", "tork", "ukren", "vjetnamiż", - "arabisk", "bosniske", "bulgarsk", "katalansk", "forenklet kinesisk", - "tradisjonell kinesisk", "kroatisk", "tsjekkisk", "dansk", "nederlandsk", - "engelsk", "estisk", "finsk", "fransk", "tysk", - "gresk", "haitisk kreolsk", "hebraisk", "ungarsk", "indonesisk", - "italiensk", "japansk", "koreansk", "latvisk", "litauisk", - "malayisk", "maltesisk", "norsk", "polsk", "portugisisk", - "querétaro enten", "rumensk", "russisk", "serbisk", "slovakisk", - "slovensk", "spansk", "svenske", "tyrkisk", "ukrainsk", - "vietnamesisk", "walisisk", "عربی", "بوسنیایی", "بلغاری", - "کاتالان", "چینی ساده شده", "چینی سنتی", "کرواتی", "چک", - "دانمارک", "هلندی", "انگلیسی", "استونیایی", "فنلاندی", - "فرانسه", "آلمانی", "یونانی", "زبان کریول آییسینی", "عبری", - "هندی", "همونگ ادم کند و تنبل", "مجارستان", "اندونزی", "ایتالیایی", - "ژاپنی", "kiswahili تهیه شده است", "کره ای", "کلینگون", "لتونی", - "لیتوانی", "مالایی", "مالتی", "نروژی", "فارسی", - "لهستانی", "پرتغالی", "رومانیایی", "روسی", "صربستان سیریلیک", - "صربستان لاتین", "اسلواکی", "اسلوونیایی", "اسپانیایی", "سوئد", - "تایلندی", "ترکیه", "اوکراینی", "اردو", "ویتنامی", - "ویلز", "مایا yucatec", "arabski", "bośniacki", "bułgarski", - "kataloński", "chiński uproszczony", "chiński tradycyjny", "chorwacki", "czeski", - "duński", "holenderski", "angielski", "estoński", "fiński", - "francuski", "niemiecki", "grecki", "haitański", "hebrajski", - "węgierski", "indonezyjski", "włoski", "japoński", "koreański", - "klingoński", "łotewski", "litewski", "malajski", "maltański", - "norweski", "perski", "polski", "portugalski", "rumuński", - "rosyjski", "serb.", "serbski łacina", "słowacki", "słoweński", - "hiszpański", "szwedzki", "tajski", "turecki", "ukraiński", - "wietnamski", "walijski", "árabe", "bósnio", "búlgaro", - "catalão", "chinês simplificado", "chinês tradicional", "croata", "tcheco", - "dinamarquês", "holandês", "inglês", "estoniano", "finlandês", - "francês", "alemão", "grego", "hebraico", "húngaro", - "indonésio", "japonês", "letão", "malaio", "maltês", - "norueguês", "polonês", "português", "romeno", "sérvio cirílico", - "sérvio-latino", "eslovaco", "esloveno", "espanhol", "sueco", - "tailandês", "ucraniano", "galês", "iucateque", "bosnio", - "catalán", "txino simplificado", "txino pa mahä'mu̲", "checo", "danés", - "holandés", "ra ingles", "estonio", "finlandés", "francés", - "alemän", "griego", "criollo haitiano", "hebreo", "indonesio", - "japonés", "letón", "malayo", "maltés", "noruego", - "polaco", "portugués", "maxei ñäñho", "rumano", "ruso", - "cirílico servio", "serbio latino", "hñämfo̲", "tailandés", "galés", - "maya yucateco", "arabă", "bosniacă", "bulgară", "catalană", - "chineză simplificată", "chineză tradiţională", "croată", "cehă", "daneză", - "olandeză", "engleză", "estonă", "finlandeză", "franceză", - "germană", "greacă", "creolă haitiană", "ebraică", "maghiară", - "indoneziană", "italiană", "japoneză", "coreeană", "klingoniană", - "letonă", "lituaniană", "malaieză", "malteză", "norvegiană", - "persană", "poloneză", "portugheză", "română", "rusă", - "sârbă-chirilică", "sârbă-latină", "slovacă", "slovenă", "spaniolă", - "suedeză", "turcă", "ucraineană", "vietnameză", "velşă", - "арабский", "боснийский", "болгарский", "каталанский", "китайский упрощенный", - "китайский традиционный", "хорватский", "чешский", "датский", "нидерландский", - "английский", "эстонский", "финский", "французский", "немецкий", - "греческий", "гаитянский", "иврит", "хинди", "оупж хмонг", - "венгерский", "индонезийский", "итальянский", "японский", "суахили", - "корейский", "клингонский", "латышский", "литовский", "малайский", - "мальтийский", "норвежский", "персидский", "польский", "португальский", - "керетаро отоми", "румынский", "русский", "сербская кириллица", "сербская латинской", - "словацкий", "словенский", "испанский", "шведский", "тайский", - "турецкий", "украинский", "урду", "вьетнамский", "валлийский", - "юкатекский", "арапски", "босански", "бугарски", "каталонски", - "кинески поједностављени", "кинески традиционални", "хрватски", "чешки", "дански", - "холандски", "енглески", "естонски", "фински", "француски", - "немачки", "грчки", "хаићански креолски", "хебрејски", "хинду", - "госпоро хмонга", "мађарски", "индонежански", "италијански", "јапански", - "свахили", "кореански", "клингонски", "летонски", "литвански", - "малајски", "малтешки", "норвешки", "персијски", "пољски", - "португалски", "qуерéтаро отоми", "румунски", "руски", "српска ћирилица", - "српски латиница", "словачки", "словенски", "шпански", "шведски", - "тајландски", "турски", "украјински", "вијетнамски", "велшански", - "yуцатец маyа", "kineski pojednostavljeni", "kineski tradicionalni", "holandski", "nemački", - "hindu", "gospoрo hmonga", "indonežanski", "italijanski", "svahili", - "koreanski", "letonski", "persijski", "rumunski", "španski", - "velšanski", "arabčina", "bosniansky jazyk", "bulharčina", "katalánčina", - "čínština (zjednodušená)", "čínština (tradičná)", "chorvátčina", "čeština", "dánčina", - "holandčina", "angličtina", "estónčina", "fínčina", "francúzština", - "nemčina", "gréčtina", "haitskej kreolský", "hebrejčina", "hindčina", - "maďarčina", "indonézština", "taliančina", "japončina", "kórejčina", - "lotyština", "litovčina", "malajčina", "maltčina", "nórčina", - "perzština", "poľština", "portugalčina", "otomo querétaro", "rumunčina", - "ruština", "srbský (cyrilika)", "srbská latinčina", "slovenčina", "slovinčina", - "španielčina", "švédčina", "thajčina", "turečtina", "ukrajinčina", - "urdčina", "vietnamčina", "waleština", "arabščina", "bošnjaški jezik", - "bolgarščina", "katalonščina", "poenostavljena kitajščina", "tradicionalna kitajščina", "hrvaščina", - "češčina", "danščina", "nizozemščina", "angleščina", "estonščina", - "finščina", "francoščina", "nemščina", "grščina", "hebrejščina", - "hindijščina", "madžarščina", "indonezijščina", "italijanščina", "japonščina", - "korejščina", "klingonščina", "latvijščina", "litovščina", "malajščina", - "malteščina", "norveščina", "perzijščina", "poljščina", "portugalščina", - "romunščina", "ruščina", "srbsko", "srb latinski", "slovaščina", - "slovenščina", "španščina", "švedščina", "tajščina", "turščina", - "ukrajinščina", "vietnamščina", "valižanščina", "chino simplificado", "chino tradicional", - "inglés", "alemán", "español", "arabiska", "bosniska", - "bulgariska", "katalanska", "kinesiska, förenklad", "kinesiska, traditionell", "kroatiska", - "tjeckiska", "danska", "nederländska", "engelska", "estniska", - "finska", "franska", "tyska", "grekiska", "haitiska", - "hebreiska", "ungerska", "indonesiska", "italienska", "japanska", - "koreanska", "klingonska", "lettiska", "litauiska", "malajiska", - "maltesiska", "norska", "persiska", "polska", "portugisiska", - "rumänska", "ryska", "serbisk kyrilliska", "serbiska-latin", "slovakiska", - "slovenska", "spanska", "svenska", "turkiska", "ukrainska", - "vietnamesiska", "walesiska", "อาหรับ", "บอสเนีย", "เบลเยียม", - "คาตาลัน", "จีนประยุกต์", "จีนดั้งเดิม", "โครเอเชีย", "เชก", - "เดนมาร์ก", "ดัทช์", "อังกฤษ", "เอสโทเนีย", "ฟินแลนด์", - "ฝรั่งเศส", "เยอรมัน", "กรีก", "ชาวเฮติ", "เฮบรู", - "ฮินดี", "ม้งทะเล", "ฮังการี", "อินโดนีเซีย", "อิตาลี", - "ญี่ปุ่น", "กีสวาฮีลี", "เกาหลี", "คลิงออน", "ลัตเวีย", - "ลิธัวเนีย", "มาเลย์", "มอลเทส", "นอร์เวย์", "เปอร์เซีย", - "โปแลนด์", "โปรตุเกส", "otomi ซึ่ง", "โรมาเนีย", "รัสเซีย", - "เซอร์เบียซิริลลิก", "ละตินเซอร์เบีย", "สโลวัค", "สโลวีเนีย", "สเปน", - "สวีเดน", "ไทย", "ตุรกี", "ยูเครน", "เออร์ดู", - "เวียดนาม", "เวลช์", "arapça", "boşnakça", "bulgarca", - "katalanca", "basitleştirilmiş çince", "geleneksel çince", "hırvatça", "çekçe", - "danca", "hollanda dili", "İngilizce", "estonca", "fince", - "fransızca", "almanca", "yunanca", "haitice", "İbranice", - "hintçe", "macarca", "endonezya dili", "İtalyanca", "japonca", - "kore dili", "letonca", "litvanca", "malay dili", "malta dili", - "norveç dili", "farsça", "lehçe", "portekizce", "rumence", - "rusça", "sırpça", "sırp latin", "slovakça", "slovence", - "İspanyolca", "İsveç dili", "tay dili", "türkçe", "ukrayna dili", - "urduca", "vietnam dili", "galce", "арабська", "боснійська", - "болгарська", "каталанська", "китайська (спрощене письмо)", "китайська (традиційне письмо)", "хорватська", - "чеська", "датська", "нідерландська", "англійська", "естонська", - "фінська", "французька", "німецька", "грецька", "гаїтянська креольська", - "іврит", "хінді", "хмонг жи", "угорська", "індонезійська", - "італійська", "японська", "суахілі", "корейська", "клінгонскій", - "латиська", "литовська", "малайська", "мальтійська", "норвезька", - "перська", "польська", "португальська", "керетаро отом", "румунська", - "російська", "сербська кирилична", "сербська (латиниця)", "словацька", "словенська", - "іспанська", "шведська", "тайська", "турецька", "українська", - "в\'єтнамська", "валлійська", "юкатецька", "بوسنين", "بلگيرين", - "کٹالن", "آسان چائنيز", "ثقافتی چائنيز", "کروٹيئن", "کزکھ", - "ڈينش", "ڈچ", "انگريزی", "اسٹونين", "فنش", - "فرنچ", "جرمن", "يونانی", "ہيتيئن کريول", "اسرائيلی", - "ہندی", "ہنگرين", "انڈونيشين", "اطالوی", "جاپانی", - "سواحلی", "کوريئن", "کلنگاون", "لاتوين", "لتھونيئن", - "مالے", "مالٹيز", "نارويجين", "پولش", "پرتگال", - "querétaro اوٹوما", "رومانيئن", "رشئن", "سربیائی سیریلیائی", "سربیائی لاطینی", - "سلووک", "سلووينيئن", "سپينش", "سؤڈش", "تھائ", - "ترکش", "يوکرينيئن", "ويتناميز", "ويلش", "یوکٹیک مایا", - "tiếng ả rập", "tiếng bulgaria", "tiếng catalan", "tiếng trung giản thể", "trung quốc truyền thống", - "séc", "đan mạch", "hà lan", "tiếng anh", "tiếng estonia", - "phần lan", "tiếng pháp", "đức", "hy lạp", "tiếng hebrew", - "tiếng hin-ddi", "ý", "nhật bản", "hàn quốc", "tiếng latvia", - "tiếng mã lai", "xứ man-tơ", "na uy", "ba tư", "ba lan", - "tiếng bồ đào nha", "rumani", "nga", "serbia cyrillic", "tiếng slovak", - "tiếng slovenia", "tiếng tây ban nha", "thụy điển", "thái lan", "thổ nhĩ kỳ", - "tiếng ukraina", "tiếng urdu", "việt nam", "tiếng wales", "arabeg", - "bosnieg", "bwlgareg", "catalaneg", "tsieinëeg (wedi ei symyleiddio)", "tsieinëeg (traddodiadol)", - "croateg", "tsieceg", "daneg", "iseldireg", "saesneg", - "estoneg", "ffineg", "ffrangeg", "almaeneg", "iaith groeg", - "creol haiti", "hebraeg", "hwngareg", "indoneseg", "eidaleg", - "siapaneeg", "corëeg", "latfeg", "lithwaneg", "maleieg", - "malteg", "norwyeeg", "perseg", "pwyleg", "portiwgeeg", - "rwmaneg", "rwsieg", "cyrilig serbia", "lladin serbia", "slofaceg", - "slofeneg", "sbaeneg", "swedeg", "twrceg", "wrceineg", - "wrdw", "fietnameg", "cymraeg", "xokiko'ob catalan", "chino xíiw", - "ingles", "frances", "japones", "káastelan", "maaya yucateco" - ] - diff --git a/libraries/botbuilder-ai/microsoft/botbuilder/ai/qna_maker.py b/libraries/botbuilder-ai/microsoft/botbuilder/ai/qna_maker.py deleted file mode 100644 index 48a52467c..000000000 --- a/libraries/botbuilder-ai/microsoft/botbuilder/ai/qna_maker.py +++ /dev/null @@ -1,72 +0,0 @@ -import json -import asyncio -import requests - -class QnAMaker: - - __qnaMakerServiceEndpoint = 'https://westus.api.cognitive.microsoft.com/qnamaker/v3.0/knowledgebases/' - __json_mime_type = 'application/json' - __api_management_header = 'Ocp-Apim-Subscription-Key' - - def __init__(self, options, http_client): - - self.__http_client = _http_client or False - if not self.__http_client: - raise TypeError('HTTP Client failed') - self.__options = options or False - if not self.__options: - raise TypeError('Options config error') - - self.__answerUrl = "%s%s/generateanswer" % (__qnaMakerServiceEndpoint,options.knowledge_base_id) - - if self.__options.ScoreThreshold == 0: - self.__options.ScoreThreshold = 0.3 #Note - SHOULD BE 0.3F 'FLOAT' - - if self.__options.Top == 0: - self.__options.Top = 1 - - if self.__options.StrictFilters == None: - self.__options.StrictFilters = MetaData() - - if self.__options.MetadataBoost == None: - self.__options.MetadataBoost = MetaData() - - async def get_answers(question): # HTTP call - headers = { - __api_management_header : self.__options.subscription_key, - "Content-Type" : __json_mime_type - } - - payload = json.dumps({ - "question" : question - }) - # POST request to QnA Service - content = requests.post(self.__answerUrl, headers=headers, data=payload) - return content.json() - -class QnAMakerOptions: - def __init__(self, subscription_key, knowledge_base_id, score_threshhold, top, strict_filters, metadata_boost): - self.subscription_key = subscription_key - self.knowledge_base_id = knowledge_base_id - self.score_threshhold = score_threshhold - self.top = top - self.strict_filters = strict_filters - self.metadata_boost = metadata_boost - -class MetaData: - def __init__(self, name, value): - self.name = name - self.value = value - -class QueryResult: - def __init__(self, questions, answer, score, metadata, source, qna_id): - self.questions = questions - self.answer = answer - self.score = score - self.metadata = metadata - self.source = source - self.qna_id = qna_id - -class QueryResults: - def __init__(self, answers): - self.__answers = answers \ No newline at end of file diff --git a/libraries/botbuilder-ai/requirements.txt b/libraries/botbuilder-ai/requirements.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/libraries/botbuilder-ai/setup.cfg b/libraries/botbuilder-ai/setup.cfg deleted file mode 100644 index 68c61a226..000000000 --- a/libraries/botbuilder-ai/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[bdist_wheel] -universal=0 \ No newline at end of file diff --git a/libraries/botbuilder-ai/setup.py b/libraries/botbuilder-ai/setup.py deleted file mode 100644 index 48b04bab9..000000000 --- a/libraries/botbuilder-ai/setup.py +++ /dev/null @@ -1,20 +0,0 @@ -from setuptools import setup, find_packages - -setup( - name='microsoft-botbuilder-ai', - version='4.0.0-a0', - url='https://www.github.com/Microsoft/botbuilder-python', - long_description='Cognitive services extensions for Microsoft BotBuilder.', - license='MIT', - author='Microsoft', - author_email='bf-reports@microsoft.com', - description='', - packages=find_packages(), - classifiers=[ - 'Programming Language :: Python', - 'Intended Audience :: Bot Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3' - ] -) diff --git a/libraries/botbuilder/microsoft/botbuilder/__init__.py b/libraries/botbuilder/microsoft/botbuilder/__init__.py index 5406c1d0a..9345578d9 100644 --- a/libraries/botbuilder/microsoft/botbuilder/__init__.py +++ b/libraries/botbuilder/microsoft/botbuilder/__init__.py @@ -7,12 +7,7 @@ from .activity_adapter import ActivityAdapter -from .assertions import BotAssert from .bot_framework_adapter import BotFrameworkAdapter -from .card_styler import CardStyler, ContentTypes __all__ = ['ActivityAdapter', - 'BotAssert', - 'BotFrameworkAdapter', - 'CardStyler', - 'ContentTypes',] + 'BotFrameworkAdapter',] diff --git a/libraries/botbuilder/microsoft/botbuilder/assertions.py b/libraries/botbuilder/microsoft/botbuilder/assertions.py deleted file mode 100644 index af02294eb..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/assertions.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import * - -from microsoft.botbuilder.schema import * - - -class BotAssert(object): - - @staticmethod - def activity_not_none(activity: Activity): - if activity is None: - raise TypeError() - - @staticmethod - def context_not_none(context): - if context is None: - raise TypeError() - - @staticmethod - def conversation_reference_not_none(reference): - if reference is None: - raise TypeError() - - @staticmethod - def adapter_not_null(adapter): - if adapter is None: - raise TypeError() - - @staticmethod - def activity_list_not_null(activity_list: List[Activity]): - if activity_list is None: - raise TypeError() - - @staticmethod - def middleware_not_null(middleware): - if middleware is None: - raise TypeError() - - @staticmethod - def middleware_set_not_null(middleware: List[object]): # object should be Middleware - if middleware is None: - raise TypeError() diff --git a/libraries/botbuilder/microsoft/botbuilder/card_styler.py b/libraries/botbuilder/microsoft/botbuilder/card_styler.py deleted file mode 100644 index 88e9fe11e..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/card_styler.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - - -from enum import Enum -from copy import deepcopy - - -class ContentTypes(Enum): - """List of content types for each card style.""" - adaptive_card = 'application/vnd.microsoft.card.adaptive' - animation_card = 'application/vnd.microsoft.card.animation' - audio_card = 'application/vnd.microsoft.card.audio' - hero_card = 'application/vnd.microsoft.card.hero' - receipt_card = 'application/vnd.microsoft.card.receipt' - signin_card = 'application/vnd.microsoft.card.signin' - thumbnail_card = 'application/vnd.microsoft.card.thumbnail' - video_card = 'application/vnd.microsoft.card.video' - - -class CardStyler(object): - """ - A set of utility functions designed to assist with the formatting of the various card types a - bot can return. All of these functions return an `Attachment` which can be added to an `Activity` - directly or passed as input to a `MessageStyler` function. - """ - content_types = ContentTypes - """List of content types for each card style.""" - - @staticmethod - def adaptive_card(card): - """ - Returns an attachment for an adaptive card. The attachment will contain the card and the - appropriate `contentType`. - - Adaptive Cards are a new way for bots to send interactive and immersive card content to - users. For channels that don't yet support Adaptive Cards natively, the Bot Framework will - down render the card to an image that's been styled to look good on the target channel. For - channels that support [hero cards](#herocards) you can continue to include Adaptive Card - actions and they will be sent as buttons along with the rendered version of the card. - - For more information about Adaptive Cards and to download the latest SDK, visit - [adaptivecards.io](http://adaptivecards.io/). - :param card: - :return: - """ - return { - 'contentType': CardStyler.content_types.adaptive_card, - 'content': card - } - - @staticmethod - def animation_card(title, media, buttons=None, other=None): - """ - Returns an attachment for an animation card. - :param title: - :param media: - :param buttons: - :param other: - :return: - """ - return media_card(CardStyler.content_types.animation_card, title, media, buttons, other) - - @staticmethod - def audio_card(title, media, buttons=None, other=None): - """ - Returns an attachment for an audio card. - :param title: - :param media: - :param buttons: - :param other: - :return: - """ - return media_card(CardStyler.content_types.audio_card, title, media, buttons, other) - - @staticmethod - def hero_card(title, text=None, images=None, buttons=None, other=None): - """ - Returns an attachment for a hero card. Hero cards tend to have one dominant full width image - and the cards text & buttons can usually be found below the image. - :param title: - :param text: - :param images: - :param buttons: - :param other: - :return: - """ - hero_card = CardStyler.thumbnail_card(title, text=text, images=images, buttons=buttons, other=other) - hero_card['contentType'] = CardStyler.content_types.hero_card - - @staticmethod - def receipt_card(card): - """ - Returns an attachment for a receipt card. The attachment will contain the card and the - appropriate `contentType`. - :param card: - :return: - """ - return {'contentType': CardStyler.content_types.receipt_card, 'content': card} - - @staticmethod - def signin_card(title, url, text=None): - """ - Returns an attachment for a signin card. For channels that don't natively support signin - cards an alternative message will be rendered. - :param title: - :param url: - :param text: - :return: - """ - card = {'buttons': [{'type': 'signin', 'title': title, 'value': url}]} - if text: - card['text'] = text - return {'contentType': CardStyler.content_types.signin_card, 'content': card} - - @staticmethod - def thumbnail_card(title, text=None, images=None, buttons=None, other=None): - """ - Returns an attachment for a thumbnail card. Thumbnail cards are similar to [hero cards](#herocard) - but instead of a full width image, they're typically rendered with a smaller thumbnail version of - the image on either side and the text will be rendered in column next to the image. Any buttons - will typically show up under the card. - :param title: - :param text: - :param images: - :param buttons: - :param other: - :return: - """ - if not isinstance(text, str): - other = buttons - buttons = images - images = text - text = None - card = deepcopy(other) - if title: - card['title'] = title - if text: - card['text'] = text - if images: - card['images'] = CardStyler.images(images) - if buttons: - card['buttons'] = CardStyler.actions(buttons) - - return {'contentType': CardStyler.content_types.thumbnail_card, 'content': card} - - @staticmethod - def video_card(title, media, buttons=None, other=None): - """ - Returns an attachment for a video card. - :param title: - :param media: - :param buttons: - :param other: - :return: - """ - return media_card(CardStyler.content_types.video_card, title, media, buttons, other) - - @staticmethod - def actions(*actions): - """ - Returns a properly formatted array of actions. Supports converting strings to `messageBack` - actions (note: using 'imBack' for now as 'messageBack' doesn't work properly in emulator.) - :param actions: - :return: - """ - list_of_actions = [] - for action in actions: - if isinstance(action, dict): # what else might an action be? - list_of_actions.append(action) - else: - list_of_actions.append({'type': 'imBack', 'value': str(action), 'title': str(action)}) - return list_of_actions - - @staticmethod - def images(*images): - """ - Returns a properly formatted array of card images. - :param images: - :return: - """ - list_of_images = [] - for image in images: - if isinstance(image, dict): - list_of_images.append(image) - else: - list_of_images.append({'url': image}) - return list_of_images - - @staticmethod - def media(*links): - """ - Returns a properly formatted array of media url objects. - :param links: - :return: - """ - list = [] - for link in links: - if isinstance(links, dict): - raise NotImplementedError() - - -def media_card(content_type, title, media, buttons=None, other=None): - card = other or {} - if title: - card['title'] = title - if media: - card['media'] = CardStyler.media(media) - if buttons: - card['buttons'] = CardStyler.actions(buttons) - return {'contentType': content_type, 'content': card} \ No newline at end of file diff --git a/libraries/botbuilder/microsoft/botbuilder/middleware/__init__.py b/libraries/botbuilder/microsoft/botbuilder/middleware/__init__.py deleted file mode 100644 index 3f52dfa0c..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/middleware/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- - -from .intent_recognizer_middleware import Intent, IntentRecognizerMiddleware -from .middleware import Middleware -from .middleware_set import MiddlewareSet - -__all__ = ['Intent', - 'IntentRecognizerMiddleware', - 'Middleware', - 'MiddlewareSet'] diff --git a/libraries/botbuilder/microsoft/botbuilder/middleware/intent_recognizer_middleware.py b/libraries/botbuilder/microsoft/botbuilder/middleware/intent_recognizer_middleware.py deleted file mode 100644 index 896501add..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/middleware/intent_recognizer_middleware.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - - -import asyncio -from abc import * -from typing import * - -from ..assertions import BotAssert - - -class Intent(object): - def __init__(self, name: str=None, score: float=None, entities: List[object]=None): - self.name = name - self.score = score - self.entities = entities - - -@abstractmethod -def intent_disabler(context): pass - - -@abstractmethod -def intent_recognizer(context): pass - - -@abstractmethod -def intent_result_mutators(context, intents: List[Intent]): pass - - -class IntentRecognizerMiddleware(object): - def __init__(self): - self._intent_disablers: List[intent_disabler] = [] - self._intent_recognizers: List[intent_recognizer] = [] - self._intent_result_mutators: List[intent_result_mutators] = [] - self._loop = asyncio.get_event_loop() - - async def receive_activity(self, context): - BotAssert.context_not_none(context) - - intents: List[Intent] = await self.recognize(context) - if len(intents) > 0: - top_intent: Intent = IntentRecognizerMiddleware.find_top_intent(intents) - if top_intent.score > 0.0: - context.top_intent = top_intent - - async def recognize(self, context): - BotAssert.context_not_none(context) - is_enabled: bool = await self.is_recognizer_enabled(context) - if is_enabled: - all_recognized_intents: List[Intent] = await self.run_recognizer(context) - await self.run_filters(context, all_recognized_intents) - return all_recognized_intents - else: - return [] - - async def run_recognizer(self, context): - all_recognized_intents: List[Intent] = [] - for recognizer in self._intent_recognizers: - intents: List[Intent] = await recognizer(context) - if intents is not None and len(intents) > 0: - all_recognized_intents.extend(intents) - return all_recognized_intents - - async def is_recognizer_enabled(self, context): - for user_code in self._intent_disablers: - is_enabled: bool = await user_code(context) - if is_enabled is False: - return False - return True - - async def run_filters(self, context, intents: List[Intent]): - for filter in self._intent_result_mutators: - await filter(context, intents) - - def on_enabled(self, pre_condition: intent_disabler): - if pre_condition is None: - raise TypeError() - elif callable(pre_condition) is False: - raise ValueError() - self._intent_disablers.append(pre_condition) - return self - - def on_recognize(self, recognizer: intent_recognizer): - if recognizer is None: - raise TypeError() - elif callable(recognizer) is False: - raise ValueError() - self._intent_recognizers.append(recognizer) - return self - - def on_filter(self, post_condition: intent_result_mutators): - if post_condition is None: - raise TypeError() - elif callable(post_condition) is False: - raise ValueError() - self._intent_result_mutators.insert(0, post_condition) - return self - - @staticmethod - def find_top_intent(intents: List[Intent]): - if intents is None: - raise TypeError() - if len(intents) <= 0: - raise ValueError('No Intents found.') - top_intent = intents[0] - top_score = top_intent.score - for intent in intents: - if intent.score - top_score > 0: - top_score = intent.score - top_intent = intent - return top_intent diff --git a/libraries/botbuilder/microsoft/botbuilder/middleware/middleware.py b/libraries/botbuilder/microsoft/botbuilder/middleware/middleware.py deleted file mode 100644 index f70aeb7f6..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/middleware/middleware.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - - -from abc import ABC, abstractmethod - - -class Middleware(ABC): - """ - It is not required to implement this class as MiddlewareSet also features support for dicts. - When implementing this class you will either need to implement each method. - To avoid having having use each method, either create a dict or override the method to pass. - """ - @abstractmethod - async def context_created(self, context): - """ - (Optional) called when a new context object has been created. - Plugins can extend the context object in this call. - :param context: - :return: - """ - pass - - @abstractmethod - async def receive_activity(self, context): - """ - (Optional) called after context_created to route a receive activity. - Plugins can return `{'handled': True}` to indicate that they have successfully routed the - activity. This will prevent further calls to receive_activity() - :param context: - :return: - """ - pass - - @abstractmethod - async def send_activity(self, context, activities): - """ - (Optional) called anytime an outgoing set of activities are being sent. - Plugins can implement logic to either transform the outgoing activities or to persist some - state prior to delivery of the activities. - :param context: - :param activities: - :return: - """ - pass diff --git a/libraries/botbuilder/microsoft/botbuilder/middleware/middleware_set.py b/libraries/botbuilder/microsoft/botbuilder/middleware/middleware_set.py deleted file mode 100644 index 0637f53f1..000000000 --- a/libraries/botbuilder/microsoft/botbuilder/middleware/middleware_set.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - - -import asyncio - - -class MiddlewareSet(object): - """ - A set of `Middleware` plugins. The set itself is middleware so you can easily package up a set - of middleware that can be composed into a bot with a single `bot.use(mySet)` call or even into - another middleware set using `set.use(mySet)`. - """ - def __init__(self): - self._middleware = [] - self._loop = asyncio.get_event_loop() - - def middleware(self): - """ - Returns the underlying array of middleware. - :return: - """ - return self._middleware - - def use(self, *middleware): - """ - Registers middleware plugin(s) with the bot or set. - :param middleware : - :return: - """ - self._middleware.extend(middleware) - return self - - async def context_created(self, context): - async def call_middleware(middleware_set): - for middleware in middleware_set: - if hasattr(middleware, 'context_created') and callable(middleware.context_created): - await asyncio.ensure_future(middleware.context_created(context)) - elif 'context_created' in middleware and callable(middleware['context_created']): - await asyncio.ensure_future(middleware['context_created'](context)) - return await asyncio.ensure_future(call_middleware(self._middleware[0:])) - - async def receive_activity(self, context): - async def call_middleware(middleware_set): - for middleware in middleware_set: - if hasattr(middleware, 'receive_activity') and callable(middleware.receive_activity): - await asyncio.ensure_future(middleware.receive_activity(context)) - elif 'receive_activity' in middleware and callable(middleware['receive_activity']): - await asyncio.ensure_future(middleware['receive_activity'](context)) - return await asyncio.ensure_future(call_middleware(self._middleware[0:])) - - async def send_activity(self, context, activities): - async def call_middleware(middleware_set): - for middleware in middleware_set: - if hasattr(middleware, 'send_activity') and callable(middleware.send_activity): - await asyncio.ensure_future(middleware.send_activity(context, activities)) - elif 'send_activity' in middleware and callable(middleware['send_activity']): - await asyncio.ensure_future(middleware['send_activity'](context, activities)) - return await asyncio.ensure_future(call_middleware(self._middleware[0:])) diff --git a/samples/Echo.Connector.Bot.Adapter/bot_framework_adapter.py b/samples/Echo.Connector.Bot.Adapter/bot_framework_adapter.py deleted file mode 100644 index a9fab89d9..000000000 --- a/samples/Echo.Connector.Bot.Adapter/bot_framework_adapter.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import asyncio -from typing import List -from microsoft.botbuilder.schema import Activity -from microsoft.botframework.connector import ConnectorClient -from microsoft.botframework.connector.auth import (MicrosoftAppCredentials, - JwtTokenValidation, SimpleCredentialProvider) - - -class BotFrameworkAdapter: - - def __init__(self, app_id: str, app_password: str): - self._credentials = MicrosoftAppCredentials(app_id, app_password) - self._credential_provider = SimpleCredentialProvider(app_id, app_password) - self.on_receive = None - - def send(self, activities: List[Activity]): - for activity in activities: - connector = ConnectorClient(self._credentials, base_url=activity.service_url) - connector.conversations.send_to_conversation(activity.conversation.id, activity) - - def receive(self, auth_header: str, activity: Activity): - loop = asyncio.new_event_loop() - try: - loop.run_until_complete(JwtTokenValidation.assert_valid_activity( - activity, auth_header, self._credential_provider)) - finally: - loop.close() - if self.on_receive is not None: - self.on_receive(activity) diff --git a/samples/Echo.Connector.Bot.Adapter/main.py b/samples/Echo.Connector.Bot.Adapter/main.py index 050393b51..7f80df33b 100644 --- a/samples/Echo.Connector.Bot.Adapter/main.py +++ b/samples/Echo.Connector.Bot.Adapter/main.py @@ -52,7 +52,7 @@ def do_POST(self): data = json.loads(str(body, 'utf-8')) activity = Activity.deserialize(data) self._adapter = BotFrameworkAdapter(APP_ID, APP_PASSWORD) - self._adapter.on_receive = getattr(self, 'on_receive') + self._adapter.on_receive = self.on_receive self._adapter.receive(self.headers.get("Authorization"), activity) diff --git a/samples/Echo.Connector.Bot.Adapter/requirements.txt b/samples/Echo.Connector.Bot.Adapter/requirements.txt index 5050617a0..92bb9dca7 100644 --- a/samples/Echo.Connector.Bot.Adapter/requirements.txt +++ b/samples/Echo.Connector.Bot.Adapter/requirements.txt @@ -1,2 +1,3 @@ ../../libraries/botbuilder-schema/ ../../libraries/botframework-connector/ +../../libraries/botbuilder/