[{"categories":["AI"],"content":"The model gets the attention. The harness decides whether the agent does its job.\nMany people do not know what an agent harness is, and you can hear it in how they describe agents. A typical sentence: \u0026amp;ldquo;The LLM then executes the action\u0026amp;rdquo;, or \u0026amp;ldquo;the LLM makes the tool call.\u0026amp;rdquo;\nThat sounds harmless, but it is wrong, and it matters. The model executes nothing. It produces text that says \u0026amp;ldquo;call this tool with these inputs\u0026amp;rdquo;. The harness takes that text, runs the tool and hands the result back to the model.\nSo there are three things, and they get mixed up all the time. The model is the brain. The harness is everything around it. The agent is the two together. If you do not know who does what, you do not know where to look when something goes wrong.\nWhat a harness is#The short version: the model is the brain, the harness is everything else that turns it into an agent that works reliably.\nA model on its own only produces text. It can suggest what to do, but it cannot open a file, send a message or remember yesterday. The harness gives it hands, rules and a memory, and keeps a hand on the wheel.\nIn practice, the harness consists of:\nInstructions and context: what the agent is told and what it gets to see. Tools: what it can actually do, such as searching, reading files or calling an API. Memory: what it keeps from one step, or one session, to the next. Permissions: which of those tools and data it may use. The loop: plan, act, check the result, repeat. Approvals: the points where a human has to say yes. A log: a record of what happened and why. Stop rules: when the agent must finish, give up or hand over. Anthropic describes the harness in more technical terms as \u0026amp;ldquo;the loop that calls Claude and routes Claude\u0026amp;rsquo;s tool calls to the relevant infrastructure\u0026amp;rdquo; . Microsoft puts it this way: \u0026amp;ldquo;If the model supplies the intelligence, the harness is everything around the model.\u0026amp;rdquo; Different words, same idea.\nThe loop at the center#An agent does not answer once. It works in rounds, and the harness runs every round. The model suggests the next step. The harness decides what happens with it: it checks whether the call is allowed, asks a human where that is required, runs the tool and passes the result back.\nTake away a piece and you see what breaks. No check, and the agent never notices its own mistakes. No approval, and it acts on things it should have asked about. No stop rule, and it loops until the budget is gone.\nThree comparisons, and where each one breaks#No single comparison covers it, so here are three, each with its limit. The one I use is engine and car.\nEngine and car. The model is the engine, the harness is the rest of the car: steering, brakes, fuel line, dashboard. Nobody would call an engine on a workbench a vehicle. The comparison breaks because a car\u0026amp;rsquo;s engine rarely changes, while a model can be swapped in an afternoon. It also hides that the harness is not passive: it decides when the model is called and what it gets to see.\nHorse and harness. A horse is strong and has a will of its own. The harness does not make it stronger; it makes the strength steerable and usable. But a horse harness is passive leather, whereas an agent harness runs the loop itself, controls what the model sees and can stop it. A horse also knows the road. A model without context does not.\nOperating system and application. An operating system gives programs files, permissions, processes and a way to shut them down. A harness does the same for a model. The limit is predictability: an operating system is deterministic, a model is not. A harness cannot guarantee the outcome, it can only bound it.\nWhere you can see harnesses today#Coding agents in the terminal#Coding agents show the harness most openly. In Claude Code\u0026amp;rsquo;s default manual mode, reading files is allowed, but running shell commands and editing files require approval, according to the Claude Code permissions documentation . Permissions …","cover":"/images/090-cover.webp","date":"2026-10-29","lastmod":"2026-10-29","legacy":false,"markdown":"https://bisser.io/your-agent-is-only-as-reliable-as-its-harness/index.md","readingTime":7,"summary":"The model is the brain, the harness is everything else: instructions, tools, memory, permissions, approvals, logs and stop rules. Why the harness, not the model, runs the tool calls and decides whether an agent works.","tags":["AI","Agents","Agent Harness","Agent Architecture","Governance"],"title":"Your Agent Is Only as Reliable as Its Harness","uri":"/your-agent-is-only-as-reliable-as-its-harness/","url":"https://bisser.io/your-agent-is-only-as-reliable-as-its-harness/","wordCount":1414},{"categories":["AI","Copilot"],"content":"Every knowledge worker I know has the same problem: too much information, not enough structure. Meeting notes live in one tool, research in another, ideas scribbled on Post-its, articles bookmarked but never read again. The stuff you need in six months is exactly the stuff you can\u0026amp;rsquo;t find.\nI\u0026amp;rsquo;ve tried note-taking apps, wikis, bullet journals. They all fail the same way — the capture is easy, the retrieval is the problem, and the maintenance is what kills it.\nThis post is about how I solved it for myself: a personal Second Brain in OneDrive, structured around PARA, and driven by Copilot Cowork that knows where things belong. It took me a few weekends to set up. It\u0026amp;rsquo;s been paying off every day since.\nIf you\u0026amp;rsquo;re thinking about building something similar — for yourself, not for a team — this is the blueprint.\nThe Core Idea#A Second Brain is a persistent, external memory for the things your wetware can\u0026amp;rsquo;t be trusted with: decisions, context, half-formed ideas, research, conversations. Tiago Forte popularized the term and the PARA methodology (Projects, Areas, Resources, Archive). I use that as the backbone, but I extended it in two ways:\nA dedicated space for AI-generated artifacts — briefings, research outputs, meeting debriefs, weekly reviews. This stuff piles up fast once you start working with Copilot Cowork, and it needs its own home. A skill-based routing layer — instead of me deciding where each note goes, I describe the intent in natural language (\u0026amp;ldquo;debrief this meeting\u0026amp;rdquo;, \u0026amp;ldquo;capture this thought\u0026amp;rdquo;, \u0026amp;ldquo;save this article to read\u0026amp;rdquo;) and Copilot Cowork figures out the right folder. The key insight: the hard part of a Second Brain isn\u0026amp;rsquo;t storage, it\u0026amp;rsquo;s routing. If every new note forces you to stop and think \u0026amp;ldquo;where does this belong?\u0026amp;rdquo;, you\u0026amp;rsquo;ll stop capturing. Automate that decision and the system runs itself.\nThe Folder Structure#Here\u0026amp;rsquo;s the tree that sits in my OneDrive:\n/Second Brain /01_Inbox ← Unsorted captures, landing zone /02_Projects ← Time-bounded work with defined outcomes /03_Areas ← Ongoing responsibilities (leadership, team, domains) /04_Resources ← Evergreen reference material (by topic) /05_Archive ← Completed projects, retired material /06_AI ← Session logs, research, briefings, reviews, meeting debriefs /07_Templates ← Reusable note templates A few opinions baked into this structure:\n01_Inbox is sacred. It\u0026amp;rsquo;s the default destination whenever the routing logic isn\u0026amp;rsquo;t confident. Better to park something in the Inbox than force a bad classification. I empty it weekly. 03_Areas is where most of my time goes. Projects end; areas (people I lead, domains I own, ongoing initiatives) don\u0026amp;rsquo;t. Most knowledge workers underweight this folder. 06_AI is my addition to PARA. Once you have Copilot Cowork producing real artifacts — morning briefings, meeting debriefs, research — you need somewhere to keep them that isn\u0026amp;rsquo;t Projects (too narrow) or Resources (too generic). 07_Templates reduces friction. Every recurring note type (meeting debrief, 1-on-1, project brief, decision log, weekly review, person profile, reading list) has a template. I don\u0026amp;rsquo;t start notes from a blank page. Inside 02_Projects and 03_Areas I create sub-folders per project or area. Each gets an Overview.md at the top — a single page explaining what this area is, who\u0026amp;rsquo;s involved, what\u0026amp;rsquo;s active. Think of it as the README for that slice of your life.\nThe AI Routing Layer#Here\u0026amp;rsquo;s where it gets interesting. I use Copilot Cowork (running inside my M365 environment) with a set of custom skills — small instruction files that teach Copilot Cowork how to handle specific workflows.\nEach skill is just a Markdown file with a name, a description of when to trigger, and a playbook. My skills roughly map to intents:\nSkill What it does quick-capture Grab a thought, classify it by type, route to the right folder meeting-debrief Pull meeting context, …","cover":"/images/089-cover.webp","date":"2026-04-22","lastmod":"2026-04-22","legacy":false,"markdown":"https://bisser.io/building-a-second-brain-that-actually-works-with-copilot-cowork-as-the-librarian/index.md","readingTime":9,"summary":"How I built a personal Second Brain in OneDrive with PARA and Copilot Cowork that handles the hardest part: routing every note to the right place automatically.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot","Microsoft Foundry","Copilot Studio"],"title":"Building a Second Brain That Actually Works with Copilot Cowork as the Librarian","uri":"/building-a-second-brain-that-actually-works-with-copilot-cowork-as-the-librarian/","url":"https://bisser.io/building-a-second-brain-that-actually-works-with-copilot-cowork-as-the-librarian/","wordCount":1863},{"categories":["AI","Copilot"],"content":"The problem is rarely the technology. It is almost always the preparation.\nI have seen a lot of agent projects over the past year. Some shipped successfully, many didn\u0026amp;rsquo;t. And here is the pattern I keep noticing: the ones that fail almost never fail because of a technical limitation. They fail because of things that should have been sorted out before anyone started building.\nThat\u0026amp;rsquo;s frustrating, because most of these failures are entirely preventable.\nThe Demo Trap#Let me start with the most common failure driver: unrealistic expectations.\nWe have all seen the keynote demos. Someone describes what they want in natural language, an agent gets built in minutes, it connects to enterprise data, and it delivers perfect results. The audience applauds. The executives get excited. And then someone in the organization says: \u0026amp;ldquo;Let\u0026amp;rsquo;s build that.\u0026amp;rdquo;\nThe problem is that the demo showed the happy path of a carefully prepared scenario. It didn\u0026amp;rsquo;t show the weeks of data preparation. It didn\u0026amp;rsquo;t show the prompt engineering iterations. It didn\u0026amp;rsquo;t show the edge cases that break the agent. And it certainly didn\u0026amp;rsquo;t show the governance review that needs to happen before anything goes to production.\nWhen teams start an agent project with demo-level expectations, they are setting themselves up for disappointment. Not because the technology is bad — it is genuinely impressive — but because the gap between a demo and a production-ready agent is much larger than most people think.\nThe Three Reasons Agent Projects Stall#In my experience, agent projects that fail before shipping almost always hit one of these three walls:\n1. The Platform Was Not Ready#This one is painful because it is often outside your control. You start building an agent on a platform, and halfway through you realize that a critical feature is missing, still in preview, or doesn\u0026amp;rsquo;t work the way the documentation suggests.\nThis happened a lot in the early days of Copilot Studio\u0026amp;rsquo;s agent capabilities, and it still happens today when teams try to use cutting-edge features that are not yet generally available. The platform is evolving fast, which is great — but it also means that what worked in a demo environment last month might not be production-ready this month.\n2. The Data Was Not There#This is the one that frustrates me the most, because it is the most preventable. An agent is only as good as the data it can access. If your knowledge sources are outdated, poorly structured, incomplete, or scattered across systems without proper indexing, your agent will deliver poor results — no matter how good your instructions are.\nI have seen teams spend weeks crafting perfect agent instructions, only to realize that the SharePoint library the agent is grounded on hasn\u0026amp;rsquo;t been maintained in two years. The agent works technically. It just returns useless information.\nData quality is not an agent problem. It is a prerequisite. And it needs to be reviewed before you start building, not after.\n3. The Wrong Platform Was Chosen#The Microsoft ecosystem offers multiple ways to build agents — Agent Builder, Copilot Studio, Microsoft Foundry, the Agents SDK, and more. Each targets a different audience and a different level of complexity. Choosing the wrong platform for your use case is a recipe for frustration.\nI have seen citizen developers struggle in Copilot Studio with scenarios that really needed Microsoft Foundry. And I have seen pro developers over-engineer solutions in code when a declarative agent in Copilot Studio would have been done in an afternoon.\nThe platform decision should be one of the first things you make — and it should be based on the complexity of your use case, not on which tool your team happens to be familiar with.\nThree Things to Do Before You Build Anything#If I could give every team starting an agent project just three pieces of advice, it would be these:\nDefine a clear goal and concept first. What exactly should this …","cover":"/images/088-cover.webp","date":"2026-03-16","lastmod":"2026-03-16","legacy":false,"markdown":"https://bisser.io/why-most-copilot-agent-projects-fail-before-they-ship/index.md","readingTime":5,"summary":"Most agent projects don't fail because of the tech. They fail because of unrealistic expectations, bad data, and wrong platform choices.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot","Microsoft Foundry","Copilot Studio"],"title":"Why Most Copilot Agent Projects Fail Before They Ship","uri":"/why-most-copilot-agent-projects-fail-before-they-ship/","url":"https://bisser.io/why-most-copilot-agent-projects-fail-before-they-ship/","wordCount":1053},{"categories":["AI","Copilot"],"content":"Everyone is building agents. But who decides what they are allowed to do?\nHere\u0026amp;rsquo;s an irony I keep seeing: organizations that don\u0026amp;rsquo;t have agent governance in place don\u0026amp;rsquo;t end up with chaos. They end up with nothing. Because when there are no clear rules about what people can and cannot do with agents, IT does the only rational thing — they block everything.\nAnd I get it. If you\u0026amp;rsquo;re responsible for security and compliance, and suddenly business users start building agents that connect to your ERP, your CRM, and your internal databases without any oversight, your instinct is to shut it down. The problem is that blocking everything is just as damaging as allowing everything. You\u0026amp;rsquo;re just trading one risk for another.\nThe Real Problem Is Not Tooling#When people talk about agent governance, the conversation usually jumps to platform features — admin centers, policies, DLP rules. And yes, those matter. But in my experience, the real bottleneck is much more fundamental: most IT departments don\u0026amp;rsquo;t have the knowledge to think about agent governance holistically, and most organizations don\u0026amp;rsquo;t have a dedicated person who owns this topic.\nThink about it. Agent governance sits at the intersection of IT security, data governance, application lifecycle management, and business process design. That\u0026amp;rsquo;s a lot of domains to cover. And right now, in most organizations, nobody owns this intersection. Security owns their piece. IT ops owns their piece. The business owns their piece. But nobody is looking at the full picture.\nThat\u0026amp;rsquo;s how you end up with either total lockdown or total chaos. There\u0026amp;rsquo;s no middle ground without someone actively designing it.\nThe Six Pillars of Agent Governance#If I had to help an organization build an agent governance framework from scratch, these are the six areas I\u0026amp;rsquo;d focus on:\nPillar Key Question Roles \u0026amp;amp; Permissions Who is allowed to build, test, and deploy agents? What can citizen developers do vs. pro developers? Scope \u0026amp;amp; Data Access Which data sources can an agent access? Which systems can it interact with? Which actions can it perform? Lifecycle Management How does an agent go from idea to production? What are the gates for testing, review, and approval? Incident Management What happens when an agent behaves unexpectedly? Who is responsible? Is there an audit trail? Quality Standards What are the minimum requirements for agent instructions, grounding, and testing before deployment? Agent Inventory Do you have a catalog of all active agents? Can you spot duplicates and shadow agents? None of these are revolutionary ideas individually. But most organizations I talk to haven\u0026amp;rsquo;t thought through even half of them. And without all six in place, you\u0026amp;rsquo;re flying blind.\nShadow Agents Are the New Shadow IT#Remember when business users started spinning up their own cloud services without IT knowing about it? We called it Shadow IT, and it took years to get under control. The same thing is happening with agents right now — I\u0026amp;rsquo;d call it Shadow Agents.\nWithout governance, two things happen consistently:\nTeams build duplicate agents. The marketing team builds an agent for content creation. The communications team builds a different agent for the same thing. Nobody knows the other exists. You end up with redundant work, inconsistent outputs, and wasted effort.\nAgents access unauthorized systems. Someone builds an agent that connects to a data source or system that IT hasn\u0026amp;rsquo;t approved. Not maliciously — they just didn\u0026amp;rsquo;t know they needed to ask. But now you have an agent pulling data from a system without proper access controls, and nobody in security is aware.\nThis is exactly the pattern we saw with Shadow IT, just on a new level. And the solution is the same: you don\u0026amp;rsquo;t fix it by blocking everything. You fix it by creating a clear framework that makes it easy to do the right thing.\nYou Need a Dedicated AI Lead#The single most impactful …","cover":"/images/087-cover.webp","date":"2026-03-13","lastmod":"2026-03-13","legacy":false,"markdown":"https://bisser.io/agent-governance-is-the-next-big-bottleneck/index.md","readingTime":5,"summary":"No governance doesn't mean chaos — it means IT blocks everything. My framework for the six pillars of agent governance.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot","Governance","Agent Governance","Agents 365"],"title":"Agent Governance Is the Next Big Bottleneck","uri":"/agent-governance-is-the-next-big-bottleneck/","url":"https://bisser.io/agent-governance-is-the-next-big-bottleneck/","wordCount":1054},{"categories":["AI","Copilot"],"content":"Everyone is building agents. Almost nobody is testing them properly.\nHere\u0026amp;rsquo;s something that\u0026amp;rsquo;s been bugging me for a while: in classical software development, testing is non-negotiable. Nobody would ship a production application without at least some level of automated testing, code reviews, and quality gates. It\u0026amp;rsquo;s fundamental. And yet, when it comes to AI agents, testing is often completely neglected. It\u0026amp;rsquo;s like we collectively decided that the rules don\u0026amp;rsquo;t apply anymore.\nI think it\u0026amp;rsquo;s time we talk about this.\nWhy Agent Testing Falls Through the Cracks#The main reason is actually straightforward: the people building agents today aren\u0026amp;rsquo;t necessarily developers. Microsoft has done an incredible job democratizing agent development — from Agent Builder to Copilot Studio, anyone can build an agent without writing a single line of code. And that\u0026amp;rsquo;s genuinely great for innovation.\nBut here\u0026amp;rsquo;s the flip side: many of these builders have never been exposed to the discipline of software testing. They don\u0026amp;rsquo;t know what a test plan looks like. They\u0026amp;rsquo;ve never written a test case. Not because they\u0026amp;rsquo;re not smart — they absolutely are — but because testing was never part of their world. When a business analyst builds an agent in Copilot Studio, their definition of \u0026amp;ldquo;done\u0026amp;rdquo; is usually \u0026amp;ldquo;it works when I try it.\u0026amp;rdquo; And that\u0026amp;rsquo;s not the same as \u0026amp;ldquo;it\u0026amp;rsquo;s been properly tested.\u0026amp;rdquo;\nDeterministic Testing Doesn\u0026amp;rsquo;t Work Here#Even if you do come from a development background, you\u0026amp;rsquo;ll quickly realize that classical testing approaches don\u0026amp;rsquo;t translate well to AI agents. In traditional software, you test deterministically: given input X, you expect output Y. If the output matches, the test passes. Simple.\nWith AI agents, that model breaks down completely. Ask the same agent the same question twice, and you might get two different answers — both of which could be perfectly correct. The underlying language model is non-deterministic by nature. So if you try to apply unit test thinking to agent testing, you\u0026amp;rsquo;ll either go crazy or give up. Neither is helpful.\nWhat we need is a fundamentally new testing mindset.\nNew Categories for a New Paradigm#Instead of testing for exact outputs, I think we need to focus on qualitative evaluation categories that actually matter for agents:\nCategory What It Tests Groundedness Are the agent\u0026amp;rsquo;s answers based on the provided knowledge sources, or is it hallucinating? Tool Usage Does the agent call the right tools and APIs for a given request? Semantic Similarity Is the answer semantically correct, even if the wording differs from the expected response? Relevance Does the agent actually answer the question that was asked? Coherence Is the response logically structured and consistent? Safety Does the agent resist adversarial prompts and stay within its defined boundaries? These categories shift the focus from \u0026amp;ldquo;is the output identical?\u0026amp;rdquo; to \u0026amp;ldquo;is the output good?\u0026amp;rdquo; — and that\u0026amp;rsquo;s exactly the shift we need.\nWhat State-of-the-Art Looks Like Today#The good news is that tooling is catching up. Here\u0026amp;rsquo;s what I see as the current state-of-the-art for agent testing:\nEvaluation frameworks like Azure AI Evaluation SDK or DeepEval can automatically score agent responses on metrics like groundedness, relevance, and coherence. Essentially, you use one LLM to evaluate the output of another. It\u0026amp;rsquo;s not perfect, but it scales.\nGolden datasets — curated sets of question-answer pairs that serve as benchmarks. The key difference to classical test data: you don\u0026amp;rsquo;t check for exact matches but for semantic similarity. The agent doesn\u0026amp;rsquo;t need to produce the same words, just the same meaning.\nTool call assertions — verifying that the agent invokes the correct tools for a given input, regardless of the textual response. If someone asks \u0026amp;ldquo;What\u0026amp;rsquo;s my leave balance?\u0026amp;rdquo;, the agent …","cover":"/images/086-cover.webp","date":"2026-03-11","lastmod":"2026-03-11","legacy":false,"markdown":"https://bisser.io/testing-ai-agents-is-a-problem-nobody-wants-to-talk-about/index.md","readingTime":6,"summary":"Everyone is building agents, but almost nobody is testing them properly. My take on new testing categories, tooling, and why ALM for agents is overdue.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot","Testing","Agent Testing","ALM"],"title":"Testing AI Agents Is a Problem Nobody Wants to Talk About","uri":"/testing-ai-agents-is-a-problem-nobody-wants-to-talk-about/","url":"https://bisser.io/testing-ai-agents-is-a-problem-nobody-wants-to-talk-about/","wordCount":1076},{"categories":["AI","Copilot"],"content":"We\u0026amp;rsquo;ve been talking about agents. It\u0026amp;rsquo;s time to talk about what happens when they join the org chart.\nThe word \u0026amp;ldquo;agentic\u0026amp;rdquo; is everywhere right now. Every platform, every keynote, every product update — everything is suddenly \u0026amp;ldquo;agentic.\u0026amp;rdquo; But here\u0026amp;rsquo;s what I\u0026amp;rsquo;ve noticed: everyone uses the term, and everyone means something slightly different by it. So before we talk about the agentic organization, I think we need to take a step back and create some clarity.\nWhere We Are Today#Right now, most interactions with AI agents follow a simple pattern: one person, one agent, one task. You ask your Copilot agent a question, it gives you an answer. You trigger a workflow, the agent executes it. It\u0026amp;rsquo;s a 1:1 relationship — useful, productive, but fundamentally still a tool interaction.\nAnd that\u0026amp;rsquo;s fine. That\u0026amp;rsquo;s the current state for most organizations, and there\u0026amp;rsquo;s a lot of value in getting this right. But I don\u0026amp;rsquo;t think this is the end state. I think the next logical step on our agentic AI journey is something bigger: organizations where people and agents work together in teams. Not as tool and user, but as teammates with different roles and responsibilities.\nThat\u0026amp;rsquo;s what I mean when I talk about the agentic organization.\nThe Agentic Maturity Model#To make this more tangible, here\u0026amp;rsquo;s how I see the journey from \u0026amp;ldquo;we just got Copilot\u0026amp;rdquo; to a fully agentic organization. Most companies will recognize themselves somewhere on this scale:\nStage Description Stage 1: Copilot Rollout You\u0026amp;rsquo;re deploying Microsoft 365 Copilot, figuring out adoption, licensing, and governance basics Stage 2: Agent Ideation You\u0026amp;rsquo;re thinking about agent use cases, exploring Copilot extensibility, and piloting your first agents Stage 3: Targeted Deployment You\u0026amp;rsquo;re running agents in selected teams or specific process steps — real work, limited scope Stage 4: Governance \u0026amp;amp; Process Readiness You have agent governance under control and you\u0026amp;rsquo;re actively redesigning processes to be agent-ready Stage 5: Agentic Organization People and agents collaborate in interdisciplinary teams, working together on value-creating processes Most organizations I talk to are somewhere between Stage 1 and Stage 2. A few ambitious ones are approaching Stage 3. And that\u0026amp;rsquo;s perfectly fine — but it helps to know where you\u0026amp;rsquo;re heading.\nWhat Stage 5 Actually Looks Like#Let me make this concrete, because \u0026amp;ldquo;people and agents working together\u0026amp;rdquo; can sound abstract.\nFinance \u0026amp;amp; Controlling. Imagine agents handling the data analysis — pulling numbers, identifying anomalies, running comparisons across periods. The humans on the team don\u0026amp;rsquo;t spend their time building spreadsheets anymore. Instead, they review the agent\u0026amp;rsquo;s findings, add context that only they have (\u0026amp;ldquo;this spike is because we acquired a company last quarter\u0026amp;rdquo;), and make the decisions. The agent does the heavy lifting. The human does the thinking.\nMarketing. Agents manage the channel execution — scheduling posts, adapting content for different platforms, monitoring engagement metrics. They report back to the team with performance data and recommendations. The humans focus on strategy, creative direction, and the decisions that require judgment and brand understanding.\nValue-creating processes in general. The pattern is the same across domains: agents execute, humans supervise and decide. It\u0026amp;rsquo;s a fundamental shift from \u0026amp;ldquo;the human does the work and the agent helps\u0026amp;rdquo; to \u0026amp;ldquo;the agent does the work and the human steers.\u0026amp;rdquo;\nThat\u0026amp;rsquo;s the real transformation. Not just using agents as better tools, but integrating them as team members with defined responsibilities.\nThe Trust Question#I know what some of you are thinking: \u0026amp;ldquo;Can we really trust agents to do the work while we just supervise?\u0026amp;rdquo; And yes, there are enough skeptics out there — and healthy skepticism isn\u0026amp;rsquo;t a …","cover":"/images/085-cover.webp","date":"2026-03-09","lastmod":"2026-03-09","legacy":false,"markdown":"https://bisser.io/the-agentic-organization-when-agents-become-part-of-the-team/index.md","readingTime":5,"summary":"The next step isn't better agents — it's agents as teammates. My 5-stage maturity model for the journey to an agentic organization.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot","Agentic Organization"],"title":"The Agentic Organization — When Agents Become Part of the Team","uri":"/the-agentic-organization-when-agents-become-part-of-the-team/","url":"https://bisser.io/the-agentic-organization-when-agents-become-part-of-the-team/","wordCount":971},{"categories":["AI","Copilot"],"content":"When does extending Microsoft 365 Copilot actually pay off? Here are my thoughts.\nI\u0026amp;rsquo;ve been consuming a lot of content around Microsoft 365 Copilot extensibility lately. And while the community is doing a great job producing tutorials, samples, and getting-started guides, I noticed something: there\u0026amp;rsquo;s a ton of Hello World-style content out there, but very little about the actual return on investment. So I wanted to share my personal take on when extensibility is worth it — and what the real value looks like.\nAre You Even Ready?#Here\u0026amp;rsquo;s the thing: many organizations I talk to are still in the middle of rolling out Microsoft 365 Copilot to their users. They\u0026amp;rsquo;re figuring out adoption, licensing, governance — the basics. And that\u0026amp;rsquo;s totally fine. But for these organizations, extensibility shouldn\u0026amp;rsquo;t be the priority yet (even though the conference demos make it look like everyone should be building agents right now).\nTo me, the \u0026amp;ldquo;extensibility moment\u0026amp;rdquo; comes when you\u0026amp;rsquo;ve reached a certain maturity. You\u0026amp;rsquo;ve got a Copilot rollout going. Your users are actively working with it. You\u0026amp;rsquo;ve identified use cases that work out of the box. And then — this is key — you start noticing the gaps. The moments where users need data or processes from third-party systems, LOB apps, or your ERP that Microsoft 365 Copilot simply can\u0026amp;rsquo;t reach by default.\nThat\u0026amp;rsquo;s when extensibility becomes relevant. Not because a demo looked cool, but because your users actually need it.\nIt\u0026amp;rsquo;s About Personalization, Not Just Time Savings#When people talk about ROI for extensibility, the conversation usually goes straight to time savings. \u0026amp;ldquo;The agent saves 15 minutes per day.\u0026amp;rdquo; And sure, that\u0026amp;rsquo;s measurable. But to me, that misses the bigger picture.\nThe real value of Microsoft 365 Copilot extensibility is personalization. Out of the box, Microsoft 365 Copilot is a powerful but generic tool. It works the same for every organization. But it doesn\u0026amp;rsquo;t know your ERP system. It doesn\u0026amp;rsquo;t understand your specific business processes. It can\u0026amp;rsquo;t interact with the industry-specific applications your people use every day.\nExtensibility changes that. It transforms Microsoft 365 Copilot from a general-purpose assistant into something that understands and operates within your specific context. And that\u0026amp;rsquo;s where the real productivity and efficiency boost comes from.\nFrom Information to Delegation#Let me make this concrete (because I think this example explains it best):\nWithout extensibility, a user asks Microsoft 365 Copilot: \u0026amp;ldquo;How do I submit a purchase order in our ERP system?\u0026amp;rdquo; — and Copilot tells them which screens to navigate and which fields to fill in. Useful? Yes. Better than a manual? Definitely.\nWith extensibility, the same user asks: \u0026amp;ldquo;Submit a purchase order for 500 units of component X from supplier Y.\u0026amp;rdquo; — and an agent connected to the ERP actually does it. Validates the request, triggers the process, confirms completion. The user didn\u0026amp;rsquo;t get information about how to do their job. The agent did the job on their behalf.\nThat shift — from information to action, from assistance to delegation — is where the ROI becomes obvious. Not in minutes saved, but in entire process steps eliminated.\nStart Small, Please#One thing I\u0026amp;rsquo;ve seen way too often: organizations approaching extensibility with too much ambition too early. They want an agent covering 20 processes across five systems on day one. And these projects tend to stall.\nWhat works better (and I can\u0026amp;rsquo;t stress this enough): start with an MVP. Pick one process. One integration. One use case where the current workflow is painful. Build something simple. Ship it. Learn. Iterate. Then expand.\nMeasuring What Actually Matters#If you\u0026amp;rsquo;re going to invest in extensibility, you should know whether it\u0026amp;rsquo;s working. And \u0026amp;ldquo;users like it\u0026amp;rdquo; is not a metric. Here\u0026amp;rsquo;s what I think you …","cover":"/images/084-cover.webp","date":"2026-03-02","lastmod":"2026-03-02","legacy":false,"markdown":"https://bisser.io/the-real-roi-of-microsoft-365-copilot-extensibility/index.md","readingTime":4,"summary":"When does extending Microsoft 365 Copilot actually pay off? My take on real ROI — beyond time savings and Hello World demos.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot"],"title":"The Real ROI of Microsoft 365 Copilot Extensibility","uri":"/the-real-roi-of-microsoft-365-copilot-extensibility/","url":"https://bisser.io/the-real-roi-of-microsoft-365-copilot-extensibility/","wordCount":809},{"categories":["AI","Copilot"],"content":"Low-code doesn\u0026amp;rsquo;t mean low-complexity. Here\u0026amp;rsquo;s where the line really is.\nMicrosoft has been telling a beautiful story: business users can describe what they want in natural language, and Agent Builder in Microsoft 365 Copilot will create an agent for them. When they outgrow the basics, they can seamlessly move to Copilot Studio with one click. No code required. Anyone can build an agent.\nI\u0026amp;rsquo;ve been watching this narrative evolve for over a year now, and I think it\u0026amp;rsquo;s time for a reality check. The citizen developer promise for Copilot agents, as it\u0026amp;rsquo;s currently marketed, is an illusion. Not a lie — an illusion. There\u0026amp;rsquo;s an important difference.\nThe Happy Path Works Beautifully#Let me be fair first. If you want to build a declarative agent that answers questions based on a curated set of SharePoint documents, Agent Builder does a genuinely impressive job. You describe the agent\u0026amp;rsquo;s purpose, point it at your knowledge sources, maybe adjust the instructions, and you have something functional in minutes. For this specific use case — essentially a scoped Q\u0026amp;amp;A bot over your own content — the citizen developer story absolutely holds up.\nThe problem starts the moment you need anything beyond that happy path.\nWhere Things Fall Apart#The moment you need real integrations. Your HR manager wants an agent that doesn\u0026amp;rsquo;t just answer questions about company policies but actually checks leave balances in Workday and submits time-off requests. That requires MCP server connections, authentication configuration, understanding OAuth flows, and dealing with connector infrastructure. I\u0026amp;rsquo;ve watched technically savvy business analysts — people who are genuinely good with Power Automate and Power Apps — hit a wall when they try to configure MCP authentication with dynamic client registration. These aren\u0026amp;rsquo;t concepts that a weekend workshop prepares you for.\nThe moment you need nuanced instructions. Agent instructions look simple — you\u0026amp;rsquo;re just writing natural language, right? But crafting instructions that reliably produce the right behavior across edge cases is essentially prompt engineering. It requires understanding how the underlying model interprets ambiguity, how grounding works, what happens when the agent can\u0026amp;rsquo;t find an answer, and how to handle multi-step reasoning. This is a skill that takes practice to develop, and most business users don\u0026amp;rsquo;t have the feedback loops to develop it.\nThe moment you need to debug. Something isn\u0026amp;rsquo;t working. The agent is returning wrong information, or it\u0026amp;rsquo;s not calling the right MCP tool, or the authentication keeps failing. Where do you even start? Copilot Studio\u0026amp;rsquo;s tracing and analytics have improved significantly, but interpreting activity maps, understanding tool invocation patterns, and diagnosing orchestration failures requires a developer mindset. There\u0026amp;rsquo;s no low-code way to debug a complex agent.\nThe moment you need governance. Your citizen-developed agent works great in testing. Now it needs to go through the approval workflow in the admin center. IT needs to review the data sources, security needs to assess the permissions model, and compliance needs to verify the agent doesn\u0026amp;rsquo;t expose sensitive data. The citizen developer built the agent — but they can\u0026amp;rsquo;t shepherd it through enterprise governance alone.\nThe \u0026amp;ldquo;Copy to Copilot Studio\u0026amp;rdquo; Gap#Microsoft\u0026amp;rsquo;s answer to the complexity cliff is the \u0026amp;ldquo;Copy to Copilot Studio\u0026amp;rdquo; feature. Start simple in Agent Builder, then graduate to the full platform when you need more power. It sounds seamless, but it creates a handoff problem that nobody talks about.\nThe business user who built the prototype in Agent Builder understands the business logic. The developer who takes over in Copilot Studio understands the technology. Neither fully understands the other\u0026amp;rsquo;s domain. The result is usually one of two things: the developer rebuilds from scratch …","cover":"/images/083-cover.webp","date":"2026-02-28","lastmod":"2026-02-28","legacy":false,"markdown":"https://bisser.io/the-citizen-developer-promise-for-copilot-agents-is-an-illusion/index.md","readingTime":6,"summary":"Microsoft's promise that business users can independently build production-ready Copilot agents through Agent Builder and Copilot Studio breaks down the moment you need real integrations, complex debugging, or enterprise governance. Instead of selling the illusion of fully self-service agent development, organizations should embrace a tiered model where citizen developers prototype ideas that are refined collaboratively with technical support.","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot"],"title":"The Citizen Developer Promise for Copilot Agents is an Illusion","uri":"/the-citizen-developer-promise-for-copilot-agents-is-an-illusion/","url":"https://bisser.io/the-citizen-developer-promise-for-copilot-agents-is-an-illusion/","wordCount":1102},{"categories":["AI","Copilot"],"content":"As organizations rush to adopt Microsoft 365 Copilot, a critical question emerges: How do we extend Copilot to work with our unique business data and processes? The answer lies in understanding the three extensibility pillars—Connectors, Agents, and APIs—and knowing when (and when not) to use each. And that\u0026amp;rsquo;s why I created an infographic for that:\nUnderstanding the Anatomy of Microsoft 365 Copilot#Before diving into extensibility, let\u0026amp;rsquo;s understand what we\u0026amp;rsquo;re extending. At its core, Microsoft 365 Copilot consists of:\nThe Core Engine# Orchestrator: The traffic controller that manages data governance, safety, and responsible AI (RAI) policies Foundation Models: The AI backbone powered by GPT-4o, GPT-4.1, and newer models like o1 and o3-mini Where Extensibility Plugs In#Copilot\u0026amp;rsquo;s architecture exposes three key areas for extension:\nArea Built-in Extensible Via Knowledge Memory Grounding ← Connectors Skills Workflows, M365 Apps Triggers \u0026amp;amp; Actions ↔ Agents APIs — Your Apps → Copilot APIs The Three Extensibility Pillars#1. Connectors: Bringing External Data to Copilot#Direction: External Data → Copilot\nGraph Connectors allow you to ingest and index external data into Microsoft Graph, making it available for Copilot to reason over.\nWhat you get:\n100+ prebuilt connectors for popular systems Custom connector development via Graph API Support for CRM, ERP, databases, and file systems Best for:\nMaking enterprise data searchable and available to Copilot Connecting line-of-business applications Enabling Copilot to answer questions about your proprietary data ⚠️ Pitfall: Connectors only provide read access. If you need Copilot to take actions in external systems, you\u0026amp;rsquo;ll need Agents.\n2. Agents: AI Assistants That Do Work#Direction: AI Assistants ↔ M365 (Bidirectional)\nAgents are specialized AI assistants that can automate workflows and perform tasks. They\u0026amp;rsquo;re the most powerful—and most complex—extensibility option.\nInside Agents: Core Components#Every agent consists of three parts:\nKnowledge: Data sources like SharePoint, OneDrive, Graph Connectors, and web content Instructions: Custom persona, tone, scope limits, and behavioral guardrails Actions: Real-time API calls that let the agent do things ⚠️ Critical Insight: Actions ONLY work inside Agents! You cannot add actions to base Copilot—they must be wrapped in an agent.\nTwo Types of Agents# Type AI Engine Best For Declarative Agent Uses Copilot\u0026amp;rsquo;s AI Quick deployment, Microsoft-managed AI Custom Engine Agent Your own AI Full control, custom models, complex scenarios Three Ways to Build Actions# Approach Technology Characteristics OpenAPI Action REST API + OpenAPI Spec Existing APIs, static schema, multiple auth options MCP Server Action Model Context Protocol AI-native, dynamic tool discovery, streamable (Preview) Copilot Studio Action Power Platform Connectors 1400+ prebuilt connectors, visual designer, citizen-developer friendly 3. Copilot APIs: Embedding Copilot in Your Apps#Direction: Your Apps → Copilot\nCopilot APIs let you programmatically access Copilot\u0026amp;rsquo;s capabilities from your own applications.\nAvailable APIs:\nAPI Status Purpose Retrieval API (RAG) GA Query Microsoft Graph with AI-enhanced retrieval Search API Preview Semantic search across M365 content Chat Completions API Preview Conversational AI with M365 context Meeting Transcript API GA Access meeting transcriptions Meeting Insights API Preview Extract insights from meetings Best for:\nBuilding custom applications that leverage Copilot Integrating AI capabilities into existing line-of-business apps Creating specialized user experiences Common Pitfalls and How to Avoid Them#Pitfall #1: Using Connectors When You Need Actions#Symptom: \u0026amp;ldquo;I connected my CRM data, but Copilot can\u0026amp;rsquo;t create new records.\u0026amp;rdquo;\nSolution: Connectors are read-only. To write data back, create an Agent with Actions that call your CRM\u0026amp;rsquo;s API.\nPitfall #2: Building Custom Engines When Declarative …","cover":"/images/082-cover.webp","date":"2025-12-02","lastmod":"2025-12-02","legacy":false,"markdown":"https://bisser.io/microsoft-365-copilot-extensibility-possibilities-and-pitfalls/index.md","readingTime":5,"summary":"Microsoft 365 Copilot can be extended through three pillars—Connectors (for bringing external data in), Agents (for performing actions via OpenAPI, MCP, or Copilot Studio), and APIs (for embedding Copilot capabilities in your apps)—but the key gotcha is that Actions only work inside Agents. Start with Declarative Agents for quick wins, use Graph Connectors for read-only data access, and remember that proper data governance must be in place before connecting any data sources","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot"],"title":"Microsoft 365 Copilot Extensibility - Possibilities and Pitfalls","uri":"/microsoft-365-copilot-extensibility-possibilities-and-pitfalls/","url":"https://bisser.io/microsoft-365-copilot-extensibility-possibilities-and-pitfalls/","wordCount":940},{"categories":["AI","Copilot"],"content":"Today we live in an era of constant change. Technology changes, mindset changes and vision changes. It started out with a bunch of Generative AI tools fueled by LLMs. These AI Tools now do not only offer the access to LLMs itself, but also give you the chance of creating and using agents. These agents give you two extra-assets:\nConsistency Scope My friend Thomy wrote about the topic of AI Agents at Process Handovers: Where Consistency Matters More Than Intelligence , so if you want to know about why consistency matters, please read that first.\nBut with the introduction of agents, we also started shifting into an \u0026amp;ldquo;Agent-Centric Workplace\u0026amp;rdquo;. And I started to feel this myself rather quick: For every platform, for every service and for every use case, an agent could be built to assist me throughout my workday. To me, using agents goes beyond using Copilot. It\u0026amp;rsquo;s more a concept of delegating work to my digital teammates = agents. And with all the recent announcements and udpates published by Microsoft around topics like autonomous agents, I do not think that this concept is going to vanish in the future. More likely, we will see the transition going from prompt-based assistants to goal/task-oriented, multi-step reasoning systems more and more over the course of the next weeks, months and years.\nEcosystem#The Microsoft platforms offers a sophisticated ecosystem when it comes to building (and yes you may think why is he not writing \u0026amp;ldquo;developing\u0026amp;rdquo; instead of building, but we\u0026amp;rsquo;ll come to that in a second) agents of many kinds. You can build agents in a variety of places with a variety of tools like:\nSharePoint Copilot Studio lite Copilot Studio full Microsoft Fabric M365 Agents Toolkit \u0026amp;amp; SDK Azure AI Foundry Agent Framework \u0026amp;hellip; And all of these platforms and frameworks target a specific agent builder audience, from low-code to pro-code. Eventually I will write another blog post, or even a series, about which platforms should be leveraged by which audience. But the good news here is, that there is at least one tool or platform for everyone, no matter which skills you have when it comes to building or developing an agent. And many of the agents built with these platforms can then be again consumed from one central place: Microsoft 365 Copilot. Therefore, the platform will likely evolve and governance aspects will also be covered more and more as more and more people will not only be using agents, but will also be building agents, either for their personal use, for their team or for the whole organization.\nMulti-Agent Collaboration#With the variety of tools and frameworks, the necessacity of introducing a concept called \u0026amp;ldquo;Multi-Agent Collaboration\u0026amp;rdquo; grew. Satya Nadella once said in a keynote of a big conference that \u0026amp;ldquo;Copilot is the UI for AI\u0026amp;rdquo;. Thinking about this message, I thought that this is the beginning of the Multi-Agent Collaboration era, where Microsoft 365 Copilot itself is also an agent, having the skills of orchestrating and collaborating with other agents.\nBut for me personally, hearing this message was not the first time for me personally to think of multi-agent scenarios. Looking back at my blog post on Microsoft Build 2019 updates on Conversational AI , the concept of Skills was introduced. And this to me was the first step towards a multi-agent collaboration era, because skills in the realm of the Microsoft Bot Framework where chatbots itself, which other chatbots would call to solve specific tasks.\nHuman-Agent Collaboration Patterns#In the future, we might see a shift from \u0026amp;ldquo;Copilot in apps\u0026amp;rdquo; to \u0026amp;ldquo;Copilot across work\u0026amp;rdquo; as this may be something that people need more urgent. In my idea, I think an agent like a \u0026amp;ldquo;Project Planning Agent\u0026amp;rdquo; might be more helpful when integrated in all of my work apps, than an agent like the Copilot in Word. Because I want to perfectly do my project planning, which involves multiple platforms and …","cover":"/images/081-cover.webp","date":"2025-10-27","lastmod":"2025-10-27","legacy":false,"markdown":"https://bisser.io/the-future-of-copilot-agents-an-agent-centric-workplace/index.md","readingTime":4,"summary":"The workplace is evolving from prompt-based assistants to an agent-centric model, where specialized digital teammates pursue goals autonomously. Microsoft’s ecosystem—from SharePoint to Azure AI Foundry—empowers everyone to build agents that seamlessly extend Microsoft 365 Copilot. What began with the Bot Framework’s Skills is now multi-agent collaboration across platforms. The future isn’t Copilot in apps but Copilot across work—agents like a Project Planner that follow you everywhere. As we shift from Copilot adoption to agent lifecycle management, one question remains: What’s your vision for the agentic workplace?","tags":["AI","Copilot","Generative AI","Gen AI","Agents","Microsoft 365 Copilot"],"title":"The Future of Copilot Agents - An Agent-Centric Workplace","uri":"/the-future-of-copilot-agents-an-agent-centric-workplace/","url":"https://bisser.io/the-future-of-copilot-agents-an-agent-centric-workplace/","wordCount":851},{"categories":["AI","Copilot"],"content":"Microsoft is pushing the boundaries of how business processes can be automated with its Copilot Studio—a cloud-based, low-code platform that empowers organizations to build AI agents. In its latest release, Microsoft has introduced autonomous agent capabilities aimed at enabling agents to proactively respond to events, orchestrate tasks, and integrate seamlessly with enterprise data sources. However, while these functionalities open exciting prospects, in my opinion, they currently feel quite basic—likely reflecting their preview status.\nAutonomous Agent Capabilities at a Glance#With Copilot Studio, Microsoft now provides tools to build autonomous agents that can:\nMonitor \u0026amp;amp; React: Automatically respond to business signals or triggers to initiate tasks. Execute Business Processes: Leverage AI orchestration to run rule-based workflows and automate repetitive tasks. Integrate with Data Sources: Connect to Microsoft Graph, Dataverse, and other connectors to pull in context. Enhance Productivity: Offer a low-code way for teams to extend Microsoft 365 Copilot with personalized AI agents. Fundamental Architecture Diagram#A core element of understanding autonomous agents in Copilot Studio is their underlying architecture. Below is a diagram which displays a visual representation of the system:\ngraph LR; %% Trigger: Automated trigger A[\u0026amp;#34;Trigger\u0026amp;lt;br/\u0026amp;gt;(Recurrence/Power Platform Connector)\u0026amp;#34;] %% Core Components within Copilot Studio subgraph Core[\u0026amp;#34;Copilot Studio Orchestrator\u0026amp;#34;] B1[\u0026amp;#34;Understand trigger\u0026amp;#34;] B2[\u0026amp;#34;Analyze trigger input\u0026amp;#34;] B3[\u0026amp;#34;Build plan\u0026amp;#34;] end A --\u0026amp;gt; Core %% Backend: Data and Knowledge Sources subgraph Data[\u0026amp;#34;Data \u0026amp;amp; Knowledge Sources\u0026amp;#34;] D1[\u0026amp;#34;Add grounding data\u0026amp;#34;] D2[\u0026amp;#34;Execute actions \u0026amp;amp; plan\u0026amp;#34;] D3[\u0026amp;#34;Generate output\u0026amp;#34;] end Core --\u0026amp;gt; Data %% User: User interface subgraph User[\u0026amp;#34;User interface\u0026amp;#34;] U1[\u0026amp;#34;Send output\u0026amp;#34;] end Data --\u0026amp;gt; User Figure 1: Fundamental Architecture for Autonomous Agents in Microsoft Copilot Studio\nThis diagram illustrates how user interactions are processed through Copilot Studio, which utilizes an orchestration engine to understand the trigger and inputs along with building and executing a plan. The agents then access context-rich data from secure sources to generate responses.\nThe Preview Nature: Opportunities and Limitations#While the preview release is promising, the current autonomous agent capabilities appear somewhat basic:\nLimited Customization: The workflow options and decision-making granularity are still evolving. Early-Stage Integrations: Integrations with external systems work at a basic level—expect enhancements with additional connectors and refinements. Dependence on User Feedback: Early adopters find that while the automation framework offers efficiencies, further adjustments and human oversight are needed to handle complex real-world scenarios. These observations suggest that the preview is an important first step, setting the stage for further refinements as Microsoft iterates based on customer feedback.\nLooking Ahead#Microsoft’s vision for transforming business processes with AI is clear. As additional features and deeper integrations are developed, we can expect:\nMore advanced decision-making capabilities. Enhanced automation for complex workflows. Greater interoperability across the Microsoft ecosystem. Even though the functionality now might seem basic, it represents a foundational step towards a future where AI agents can autonomously handle a wide array of business tasks with minimal human intervention.\nWhat do you think about the current state of autonomous agent capabilities in Copilot Studio? Do you see this basic functionality as laying the groundwork for a more advanced, fully autonomous future?\n","cover":"/images/080-cover.webp","date":"2025-03-29","lastmod":"2025-03-29","legacy":false,"markdown":"https://bisser.io/exploring-autonomous-agent-capabilities-with-microsoft-copilot-studio/index.md","readingTime":3,"summary":"Examining how Microsoft Copilot Studio's preview release of autonomous agent capabilities lays a basic yet promising foundation—highlighting its core architecture, current functionalities, and future potential for automating enterprise workflows.","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Exploring Autonomous Agent Capabilities with Microsoft Copilot Studio","uri":"/exploring-autonomous-agent-capabilities-with-microsoft-copilot-studio/","url":"https://bisser.io/exploring-autonomous-agent-capabilities-with-microsoft-copilot-studio/","wordCount":496},{"categories":["AI","Copilot"],"content":"Setup#You obviously need to create or already have an agent in Microsoft Copilot Studio. If you don\u0026amp;rsquo;t have an agent already follow this tutorial to create a new custom engine agent in Copilot Studio.\nAfter you have created an agent go to your settings page of the agent and then under \u0026amp;ldquo;Generative AI\u0026amp;rdquo; you can enable the checkmark on \u0026amp;ldquo;Use deep reasoning models\u0026amp;rdquo;:\nWhen you now send a prompt to your agent you should see that the agent is using deep reasoning to generate the answer:\nWhat\u0026amp;rsquo;s interesting is that you can also see what the agent does take into account when doing the reasoning:\nAs you can now also add your custom engine agents built with Copilot Studio to your Microsoft 365 Copilot you can use this method to add deep reasoning to Microsoft 365 Copilot:\nConsiderations#This feature is currently in preview so be careful when to enable this (maybe not the best idea to use this for all production agents already). Another requirement is that your agent needs to be created in a US-based Power Platform environment and the agent\u0026amp;rsquo;s language should be English, otherwise you\u0026amp;rsquo;ll see the setting, but the agent will not use deep reasoning unfortunately.\n","cover":"/images/079-cover.webp","date":"2025-03-26","lastmod":"2025-03-26","legacy":false,"markdown":"https://bisser.io/add-deep-reasoning-to-an-copilot-studio-agent/index.md","readingTime":1,"summary":"Enabling deep reasoning on a Microsoft Copilot Studio agent and use it in Microsoft 365 Copilot","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Add deep reasoning to an Copilot Studio agent","uri":"/add-deep-reasoning-to-an-copilot-studio-agent/","url":"https://bisser.io/add-deep-reasoning-to-an-copilot-studio-agent/","wordCount":200},{"categories":["AI","Copilot"],"content":"Agent Instructor#Agent Instructor is a powerful Visual Studio Code extension designed to help developers create, analyze, and refine instructions for declarative AI agents. This tool is essential for ensuring clarity and effectiveness in agent instructions, making it easier to build robust AI solutions.\nKey Features:#Analyze Instructions:\nClarity Score: Evaluates existing instructions and provides a clarity score (0-100). Ambiguity Detection: Identifies ambiguous phrases and offers specific improvement suggestions. One-Click Corrections: Allows users to apply suggested improvements with a single click. Visual Analysis: Displays analysis results with intuitive charts. Generate Instructions:\nInteractive Input: Facilitates the creation of comprehensive instructions through interactive agent description input. AI-Powered Generation: Automatically generates well-structured and formatted instructions. Installation#Head over to the VS Code Marketplace to install the extension from there or search for \u0026amp;ldquo;Agent Instructor\u0026amp;rdquo; in the VS Code extension store. Feel free to leave feedback as I\u0026amp;rsquo;m interested in your opinion!\n","cover":"/images/078-cover.webp","date":"2025-02-20","lastmod":"2025-02-20","legacy":false,"markdown":"https://bisser.io/introducing-agent-instructor-a-vs-code-extension-for-managing-agent-instructions/index.md","readingTime":1,"summary":"A powerful VS Code extension designed to help developers create, analyze, and refine instructions for declarative AI agents.","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Introducing Agent Instructor - A VS Code extension for managing agent instructions","uri":"/introducing-agent-instructor-a-vs-code-extension-for-managing-agent-instructions/","url":"https://bisser.io/introducing-agent-instructor-a-vs-code-extension-for-managing-agent-instructions/","wordCount":145},{"categories":["AI","Copilot"],"content":"Introduction#As of now, there are a lot of options for building agents for Microsoft 365 Copilot and related services. If you are a heavy SharePoint user you can build agents which are grounded into your SharePoint knowledge with only a few clicks right within the SharePoint UI. If you are a low code maker, you can use either the Copilot Agent Builder or Microsoft Copilot Studio to build declarative agents which can then be surfaced through the Microsoft 365 Copilot Chat UX or Microsoft Teams. And if you are a pro developer you can build either declarative agents using Teams Toolkit for Visual Studio Code or Visual Studio or you can build a custom engine agent using whatever tech stack you like. That may range from integration services such as the Teams AI Library to the Microsoft 365 Agents SDK to Azure AI Foundry or any other API you may want to consume.\nAs there are many options for building agents, I tried to visualize all of them into one single infographic:\nConclusion#As the infographic shows, you have a lot of options to choose from when it comes to building agents for Microsoft 365 Copilot. Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/077-cover.webp","date":"2025-01-21","lastmod":"2025-01-21","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-7-copilot-agent-building-options/index.md","readingTime":2,"summary":"A comparison infographic on the various options you have when building Microsoft 365 Copilot Agents, from no-code to low-code to pro-code.","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 7 - Copilot Agent Building Options","uri":"/copilot-for-microsoft-365-series-7-copilot-agent-building-options/","url":"https://bisser.io/copilot-for-microsoft-365-series-7-copilot-agent-building-options/","wordCount":240},{"categories":["AI","Copilot"],"content":"Introduction#In early 2024 I released the first version of the Microsoft 365 Copilot extensiblilty options guide . Since then a lot has changed, especially the fact that Microsoft announced a at Build the capability of not only building Connectors and Plugins, but also Agents . This path was further strengthened with the Microsoft 365 Copilot Wave 2 announcements in September 2024. Despite many other updates and announcements like Copilot Pages and others, the agentic capabilities within Copilot is one of the biggest updates which lets developers not only extend Copilot using plugins or connectors, but now you can build declarative agents which combine plugins and connectors into one single solution which can then be used either seperately or within the Microsoft 365 Copilot experiences.\nAs there where many updates and changes, I modified the initial version of my decision guide, which can be found in the following infographic:\nConclusion#As the infographic shows, you have a lot of options to choose from when it comes to finding the suitable approach for extending Microsoft 365 Copilot. And when the Agent Builder functionality is rolled out, I will certainly add this to that infographic as well.\nFeel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/076-cover.webp","date":"2024-10-01","lastmod":"2024-10-01","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-6-extensibility-options-wave-2-updates/index.md","readingTime":2,"summary":"Everything you need to know about the different ways of extending Copilot for Microsoft 365 including agents, plugins and connectors which have been announced/updated after the Copilot Wave 2 event.","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 6 - Extensibility options Wave 2 updates","uri":"/copilot-for-microsoft-365-series-6-extensibility-options-wave-2-updates/","url":"https://bisser.io/copilot-for-microsoft-365-series-6-extensibility-options-wave-2-updates/","wordCount":238},{"categories":["AI","Copilot"],"content":"Introduction#In this post, we will delve into the hidden prerequisites and requirements for using Copilot for Microsoft 365. We aim to provide a comprehensive guide that will help you understand what you need to get started and ensure a smooth operation of Copilot within your Microsoft 365 environment. Let\u0026amp;rsquo;s uncover these hidden prerequisites together.\nCopilot requirements#The requirements and prerequisites for Copilot for Microsoft 365 are very well documented here . Of course I asked Copilot to generate a list of requirements, so here it is:\nBase License: Users need a prerequisite base license, detailed in the service description guide. Microsoft 365 Apps: Deployment of Microsoft 365 Apps is necessary. Third-party Cookies: For online versions of Word, Excel, and PowerPoint, third-party cookies must be enabled. Privacy Settings: Review Microsoft 365 Apps privacy settings as they affect Copilot features. Microsoft Entra ID: Users require Microsoft Entra ID accounts, which can be added or synced via the admin center. OneDrive Account: Certain features like file restore need users to have a OneDrive account. Outlook: Copilot works with the new Outlook in preview, and settings sync is required for integratio5. Teams: Configuration of Teams settings is essential for Copilot functionality in Teams. Teams Phone: For referencing meeting content, transcription or recording needs to be enabled. Microsoft Loop \u0026amp;amp; Whiteboard: Enablement of Loop and Whiteboard for tenant use is required. Update Channels: Copilot is supported in all update channels, except for Semi-Annual Enterprise Channel. Network Connectivity: Aligning with Microsoft 365 network connectivity principles is recommended. WebSocket Connections: Allow WebSocket connections for Copilot experiences that require them. In terms of licensing, Copilot for Microsoft 365 is available as an add-on plan with one of the following licensing prerequisites:\nMicrosoft 365 E5 Microsoft 365 E3 Office 365 E3 Office 365 E5 Microsoft 365 Business Standard Microsoft 365 Business Premium Microsoft 365 A5 for faculty Microsoft 365 A3 for faculty Office 365 A5 for faculty Please note that these requirements are nearly identical to the requirements for using Microsoft 365 Apps due to the integration of Microsoft Copilot for Microsoft 365 and Microsoft 365 Apps. But the list of requirements was missing one crucial thing: Enablement of the Office Feature Updates task from the scheduled tasks on the Windows client. If the execution of the following 2 tasks is blocked, then Copilot will not work on the client and in the local versions of the Office apps:\nOffice Feature Updates Office Feature Updates Logon Conclusion#Make sure to check out the Copilot requirements from time to time to see if anything has changed. Shout-out to my colleague Gottfried Jocham, for detecting the need for the scheduled task.\n","cover":"/images/075-cover.webp","date":"2024-03-25","lastmod":"2024-03-25","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-5-hidden-prerequisites/index.md","readingTime":3,"summary":"All Copilot for Microsoft 365 requirements at a glance","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 5 - Hidden prerequisites","uri":"/copilot-for-microsoft-365-series-5-hidden-prerequisites/","url":"https://bisser.io/copilot-for-microsoft-365-series-5-hidden-prerequisites/","wordCount":438},{"categories":["AI","Copilot"],"content":"Introduction#A while ago I created my first plugin for Copilot for Microsoft 365. Therefore, I would like to take the opportunity to share my experience and insights. You can find the working plugin sample in my GitHub repository .\nThe setup#I used the Teams Toolkit for Visual Studio Code to develop my plugin. You also need to make sure that you fulfill all the requirements mentioned here . Additionally, you need to deploy an Azure Open AI resource in your Azure subscription. Make sure sure to choose an Azure region which offers Dall-E models from the list of available regions , otherwise you cannot deploy a Dall-E model.\nDeveloping the plugin#When cloning my repo, make sure that you create a file called .localConfigs in the root of your plugin\u0026amp;rsquo;s folder and add the following content to that file along with the correct values for those parameters:\nBOT_ID= BOT_PASSWORD= SECRET_AOAI_KEY= AOAI_ENDPOINT= The next important part is your manifest. The manifest is crucial as Copilot uses it to determine what your plugin will do and how it can be used as well as when it should be triggered. Therefore, make sure to add meaningful descriptions to your app, your commands, and your parameters:\nThen within the searchApp.ts you will need to call your Azure Open AI resource API to generate an image and retreive it:\npublic async handleTeamsMessagingExtensionQuery( context: TurnContext, query: MessagingExtensionQuery ): Promise\u0026amp;lt;MessagingExtensionResponse\u0026amp;gt; { const searchQuery = query.parameters[0].value; const attachments = []; //const apiKey = \u0026amp;#34;\u0026amp;#34;; // Insert your Azure Open AI API Key here const service = new DalleService(apiKey, endpoint, searchQuery); switch (query.commandId ) { case \u0026amp;#39;generateImage\u0026amp;#39;: console.log(\u0026amp;#39;Trying to generate image using Dall-E\u0026amp;#39;); let response = await service.makeApiCall(); const template = new ACData.Template(imageCard); const card = template.expand({ $root: { prompt: response.data[0].revised_prompt, imageUrl: response.data[0].url, }, }); const preview = CardFactory.heroCard(response.data[0].revised_prompt); console.log(\u0026amp;#39;Revised Prompt: \u0026amp;#39;, response.data[0].revised_prompt); console.log(\u0026amp;#39;Image URL: \u0026amp;#39;, response.data[0].url); const attachment = { ...CardFactory.adaptiveCard(card), preview }; attachments.push(attachment); return { composeExtension: { type: \u0026amp;#34;result\u0026amp;#34;, attachmentLayout: \u0026amp;#34;list\u0026amp;#34;, attachments: attachments, }, }; break; } return { composeExtension: { type: \u0026amp;#34;result\u0026amp;#34;, attachmentLayout: \u0026amp;#34;list\u0026amp;#34;, attachments: attachments, }, }; } To send the image back to the user, simply use an Adaptive Card, which is used to render the image:\n{ \u0026amp;#34;$schema\u0026amp;#34;: \u0026amp;#34;http://adaptivecards.io/schemas/adaptive-card.json\u0026amp;#34;, \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;AdaptiveCard\u0026amp;#34;, \u0026amp;#34;version\u0026amp;#34;: \u0026amp;#34;1.5\u0026amp;#34;, \u0026amp;#34;body\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;${prompt}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Large\u0026amp;#34; }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Image\u0026amp;#34;, \u0026amp;#34;url\u0026amp;#34;: \u0026amp;#34;${imageUrl}\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Large\u0026amp;#34; }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;ActionSet\u0026amp;#34;, \u0026amp;#34;actions\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Action.OpenUrl\u0026amp;#34;, \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;Open Image\u0026amp;#34;, \u0026amp;#34;url\u0026amp;#34;: \u0026amp;#34;${imageUrl}\u0026amp;#34; } ] } ], \u0026amp;#34;previewCard\u0026amp;#34;: { \u0026amp;#34;contentType\u0026amp;#34;: \u0026amp;#34;application/vnd.microsoft.card.hero\u0026amp;#34;, \u0026amp;#34;content\u0026amp;#34;: { \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;${prompt}\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;${prompt}\u0026amp;#34; } } } And tha\u0026amp;rsquo;s it, you\u0026amp;rsquo;ve built your first plugin. In VS Code you can now hit F5 and test it right within Copilot in Teams!\nConclusion#Plugins play a crucial role in enhancing the Copilot ecosystem. They enable the expansion of Copilot’s inherent abilities and facilitate integration with your line-of-business applications or external platforms. Therefore, it’s important to tailor Copilot with plugins that suit your specific requirements and scenarios. However, it’s equally important to provide detailed and accurate …","cover":"/images/074-cover.webp","date":"2024-03-15","lastmod":"2024-03-15","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-4-dall-e-3-sample-plugin/index.md","readingTime":3,"summary":"A short guidance on how to create a Copilot for Microsoft 365 plugin including a sample","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 4 - Dall-E 3 sample plugin","uri":"/copilot-for-microsoft-365-series-4-dall-e-3-sample-plugin/","url":"https://bisser.io/copilot-for-microsoft-365-series-4-dall-e-3-sample-plugin/","wordCount":507},{"categories":["AI","Copilot"],"content":"Introduction#It\u0026amp;rsquo;s a bit confusing how Copilot for Microsoft 365 actually works as there are a lot of components involved. Therefore, this short post should give you a glimpse on how the inner parts of Copilot work.\nHow Copilot works#As you can see in the infographic below, the Copilot system consists of multiple components:\nCopilot Service Microsoft Graph Semantic Index Plugin catalog Plugins The most important thing to understand, is that currently plugins are not available everywhere. At the moment you can use plugins here:\nCopilot (previously called \u0026amp;ldquo;M365 Chat\u0026amp;rdquo;) Microsoft Teams Microsoft 365 Portal Edge (Although here is only the \u0026amp;ldquo;Web content\u0026amp;rdquo; plugin available) In all other applications like Word, Excel, PowerPoint and so on, plugins are not yet available.\nSo therefore, you can only use plugins where you have a more chat-based interface where Copilot assists you at the moment.\nThe way Copilot plugins work is as follows:\nUser\u0026amp;rsquo;s prompts in Microsoft 365 Apps are sent to Copilot Copilot determines user’s intent to decide what actions should follow next If Microsoft 365 data is required, Copilot grounds prompt before forwarding to LLM \u0026amp;amp; after receiving LLM response using Graph \u0026amp;amp; Semantic Index If non-Microsoft 365 data is required, Copilot fetches available plugins \u0026amp;amp; connectors to decide where to retrieve information from. If user’s intent is to take actions in a 3rd party system with a plugin available, Copilot uses plugin to execute plan Therefore, it is vital that your plugin description as well as your command \u0026amp;amp; parameter descriptions in your plugin\u0026amp;rsquo;s manifest files are as precise as they can be. Only then Copilot knows which plugins to pick when and how to treat them accordingly so that user\u0026amp;rsquo;s will benefit from your plugins.\nConclusion#Plugins are an essential part of the whole Copilot ecosystem as they allow you to extend the skills Copilot has out of the box and connect it to your LOB apps or 3rd party platforms. So make sure to extend Copilot to fit your needs and use cases, but remember to be precise on plugin descriptions for Copilot to pick it up! Feel free to use the infographic for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/073-cover.webp","date":"2024-03-01","lastmod":"2024-03-01","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-3-technical-architecture/index.md","readingTime":2,"summary":"Wondering how Copilot for Microsoft 365 is working technically? This post describes the technical architecure briefly","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 3 - Technical architecture","uri":"/copilot-for-microsoft-365-series-3-technical-architecture/","url":"https://bisser.io/copilot-for-microsoft-365-series-3-technical-architecture/","wordCount":393},{"categories":["AI","Copilot"],"content":"Introduction#As I now used Copilot for Microsoft 365 quite some time and also worked in various Copilot introduction projects with customers, I found out, that the out-of-the-box experience, for me, wasn\u0026amp;rsquo;t enough. Therefore I did a deep dive into the documentation on how to extend Copilot for Microsoft 365. In the docs, there is a decision guide which visualizes the ways of extending Copilot for Microsoft 365 and in general you have 2 options:\nExtending the data source Copilot has access to This basically is just about giving Copilot access to more than \u0026amp;ldquo;just\u0026amp;rdquo; Microsoft 365 data sources like SharePoint, OneDrive, Exchange, and so on but also including 3rd party data stores like other SaaS platforms, on premises data sources like file shares or data stored in Azure. But choosing this option does not mean, that Copilot can bidirectional communicate with those other data stores. This option is a one-way option which only allows data to flow into the Microsoft 365 index but not the other way around. Extending the Copilot functionality This option lets you extend the features Copilot offers in various situations and it also allows you to integrate Copilot with other services (3rd party platforms, custom LOB apps and so on) in a way that it can retreive data from but also writes data into those services, in other words a bidirectional communication flow. So when choosing this option, you can allow users to communicate with other services outside of the Microsoft 365 ecosystem for instance through Copilot to retreive and ingest data. And for those two options you basically have muliple ways of implementing that kind of extensibility options. But in the decision guide, there was one thing missing which is essential when talking about Copilot extensibility: Copilot Studio. Therefore, I created a modified version of the decision guide, which can be found in the following infographic:\nConclusion#As the infographic shows, you have a lot of options to choose from when it comes to finding the suitable approach for extending Copilot for Microsoft. In the next blog post(s) we\u0026amp;rsquo;ll take a look on how to deal with all those options in greater detail!\nFeel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/072-cover.webp","date":"2024-02-27","lastmod":"2024-02-27","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-2-extensibility-options/index.md","readingTime":2,"summary":"Everything you need to know about the different ways of extending Copilot for Microsoft 365 including plugins and connectors.","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 2 - Extensibility options","uri":"/copilot-for-microsoft-365-series-2-extensibility-options/","url":"https://bisser.io/copilot-for-microsoft-365-series-2-extensibility-options/","wordCount":402},{"categories":["AI","Copilot"],"content":"Introduction#It has been a while since I wrote my last blog post (more than half a year - time flies). I had a lot of things to do while I \u0026amp;ldquo;paused\u0026amp;rdquo; my blogging game, but now I wanted to start sharing some insights again. And this time about a topic which is everywhere and everything: Copilot. I\u0026amp;rsquo;m using various Copilots for quite some time now and wanted to share my learnings I had while using it.\nOutline#To be precise: What I will share is my experience with Copilot. You might now think, which Copilot, right? I know there are a ton of Copilots out there. However, I will focus on Copilot, Copilot and Copilot 😉 But to make you understand better which Copilots, the following Infographic should help you understand which Copilots I\u0026amp;rsquo;m using and for which Copilots you can expect to gain information throughout this blog series.\nLet me explain you the differences of those 3 briefly.\nCopilot#Copilot (or formerly know as \u0026amp;ldquo;Bing Chat Enterprise\u0026amp;rdquo;) is the equivalent to ChatGPT but baked into Bing and moreover, into Microsoft\u0026amp;rsquo;s Edge browser. I use it quite some time now as it\u0026amp;rsquo;s a great companion while browsing through websites and reading information as it provides concise summaries of websites within a few seconds. On top of that I used it as tool to brainstorm and generate ideas, but I replaced that use case now with something different (scroll down to see what I\u0026amp;rsquo;m using now).\nCustom Copilot#Well, what a ride. For those of you who don\u0026amp;rsquo;t know, to me Custom Copilot has quite some history. As I see it as a successor to not only Power Virtual Agents, but to all other related tech in Microsoft\u0026amp;rsquo;s Conversational AI space, like Bot Framework SDK, Bot Framework Composer, Azure Bot Service and many more. Copilot studio nowadays lets you do two main things:\nExtend 1st party Copilots (like the Copilot for Microsoft 365 ) Build custom Copilots (like a company HR copilot) But I personally am using custom copilots for years now and I have started building our very first internal copilot (or chatbot as it was called back in the days) in January 2020 using the Microsoft Bot Framework SDK and Azure Bot Service in addition to LUIS and QnA Maker. And this technology stack has evolved over time to include Bot Framework Composer , Power Virtual Agents as well as Azure Open AI.\nI will definetely spend at least one blog post in this series going into greater detail when it comes to Copilot Studio.\nCopilot for Microsoft 365#Microsofot 365 Copilot or Copilot for Microsoft 365 which is the new name for it is now my personal copilot for quite some time actually as I had the chance to get it before GA on November 1st. So I played around with it and use it now an a daily basis. The use cases where Copilot comes in handy are different. But here is a list of use cases I personally think Copilot is a great tool:\nSupport me during the complete Meeting lifecycle Help me draft notes, agenda, discussion points before a meeting Stay on track what has been discussed and agreed on during a meeting Work on my action items and tasks after a meeting Summarize long email conversations in Outlook Especially when there is a lot of noise in my Outlook inbox, Copilot helps me stay up to date what the main points within an endless email back-and-forth are Be creative This is probably the most relevant part for me personally, as I now have a virtual assistant who joins me being creative whenever I need to. No matter if I need to create a new slide or a whole slide deck for a customer pitch or conference session or if I need to come up with something new in my work tasks - Copilot helps me make my creativity process more efficient and moreover, less time consuming. And if I don\u0026amp;rsquo;t know if and how Copilot can support me work on a specific task, I just askprompt. Conclusion#As you can see I\u0026amp;rsquo;ve got one or the other story and opinion to share so stay tuned to learn more about my journey with Copilot(s)! And as usual if …","cover":"/images/071-cover.webp","date":"2023-11-21","lastmod":"2023-11-21","legacy":false,"markdown":"https://bisser.io/copilot-for-microsoft-365-series-1-the-different-flavours-of-copilot/index.md","readingTime":4,"summary":"A fresh start of something new. I would like to take you on a journey about things I learnt while using Copilot for Microsoft 365","tags":["AI","Copilot","Generative AI","Gen AI"],"title":"Copilot for Microsoft 365 Series - 1 - The different flavours of Copilot","uri":"/copilot-for-microsoft-365-series-1-the-different-flavours-of-copilot/","url":"https://bisser.io/copilot-for-microsoft-365-series-1-the-different-flavours-of-copilot/","wordCount":721},{"categories":["AI","Bot Framework"],"content":"Introduction#In this post I will show you how to extend Bot Framework Composer to support proactive messages. I will also show you how to use the extension to send proactive messages from a web application. The goal here is to use the feature of proactive messages to send notifications to users in Microsoft Teams from a web application or API.\nThe implementation#What we need is basically any chatbot build with Bot Framework Composer. So you can either go ahead and create a new one (it doesn\u0026amp;rsquo;t matter which template you choose) or you can use a bot which you already built using Composer. I will use the bot I created in the previous post in this series. You can find the code for the bot here .\nThere are basically 3 things we need to do to extend Composer to support proactive messages:\nWe need to add an additional controller to the bot called NotifyController which will be used to manage and send the proactive messages We need at least one Adaptive Card to be used within the proactive message towards the user NotifyController#The NotifyController is the controller which will be used to send the proactive messages. It will be called from a web application or API to send the message. The controller will be added to the bot project and will be called from the web application or API. The controller will be called with a JSON payload which will contain the following information:\n{ \u0026amp;#34;botId\u0026amp;#34;: \u0026amp;#34;28:botid\u0026amp;#34;, \u0026amp;#34;userId\u0026amp;#34;: \u0026amp;#34;29:userid\u0026amp;#34;, \u0026amp;#34;conversationId\u0026amp;#34;: \u0026amp;#34;19:conversationid\u0026amp;#34;, \u0026amp;#34;cardName\u0026amp;#34;: \u0026amp;#34;oppCard.json\u0026amp;#34; } The controller will then use the information from the JSON payload to send the message to the user. Therefore the controller to be added into the Controllers folder of the bot project will look like this:\nusing System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Schema; using Microsoft.Extensions.Configuration; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Web; using Microsoft.Bot.Builder.Teams; using Microsoft.Bot.Connector; using Microsoft.Bot.Connector.Authentication; using Microsoft.Bot.Schema.Teams; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace ErdwinDemo.Controllers { [Route(\u0026amp;#34;api/notify\u0026amp;#34;)] [ApiController] public class NotifyController : ControllerBase { private readonly IBotFrameworkHttpAdapter _adapter; private readonly IBot _bot; private string _appId; private string _appSecret; private string _serviceUrl; private string _conversationId; public NotifyController(IBotFrameworkHttpAdapter adapter, IBot bot, IConfiguration configuration) { _adapter = adapter; _bot = bot; _appId = configuration[\u0026amp;#34;MicrosoftAppId\u0026amp;#34;]; // The Microsoft App Id of your Bot _appSecret = configuration[\u0026amp;#34;MicrosoftAppPassword\u0026amp;#34;]; // The Microsoft App Password of your Bot _serviceUrl = \u0026amp;#34;https://smba.trafficmanager.net/emea/\u0026amp;#34;; } [HttpPost] public async Task\u0026amp;lt;IActionResult\u0026amp;gt; Post([FromBody] string content) { MicrosoftAppCredentials.TrustServiceUrl(_serviceUrl); var connectorClient = new ConnectorClient(new Uri(_serviceUrl), new MicrosoftAppCredentials(_appId, _appSecret)); dynamic json = JsonConvert.DeserializeObject(content); var bot = json[\u0026amp;#34;botId\u0026amp;#34;].Value; var user = json[\u0026amp;#34;userId\u0026amp;#34;].Value; _conversationId = json[\u0026amp;#34;conversationId\u0026amp;#34;].Value; var cardName = json[\u0026amp;#34;cardName\u0026amp;#34;].Value; await SendCardAsync(connectorClient, _conversationId, user, bot, cardName); return new ContentResult() { Content = \u0026amp;#34;Notification received and send out: \u0026amp;#34; + content.ToString(), ContentType = \u0026amp;#34;text/html\u0026amp;#34;, StatusCode = (int)HttpStatusCode.OK, }; } private static Attachment CreateAdaptiveCardAttachment(string cardName){ var cardResourcePath = …","cover":"/images/070-cover.webp","date":"2023-03-15","lastmod":"2023-03-15","legacy":false,"markdown":"https://bisser.io/bot-framework-composer-series-5-proactive-messages/index.md","readingTime":5,"summary":"The 5th post in this series covers how to extend Bot Framework Composer to support proactive messages","tags":["AI","Bot Framework","Teams Development"],"title":"Bot Framework Composer Series - 5 - Proactive Messages","uri":"/bot-framework-composer-series-5-proactive-messages/","url":"https://bisser.io/bot-framework-composer-series-5-proactive-messages/","wordCount":894},{"categories":["AI","Bot Framework"],"content":"As ChatGPT is currently everywhere, I wanted to test it out and see how it works. I also wanted to see if it can be used to write tutorials. So I decided to write this tutorial using ChatGPT. I will explain how I did it and what I think about it.\nSo what I basically wanted to see is if it can write me a tutorial which lists all the steps I need to do to create a Teams bot. I also wanted to see if it can write the code for me. So I decided to use Yo Teams as a starting point. Yo Teams is a Yeoman generator for creating Microsoft Teams apps. It can be used to create a new Teams app project with all the necessary files and configurations. It can also be used to create a new bot project with all the necessary files and configurations. So I thought it would be a good starting point for my tutorial.\nThe input#The instruction I gave to ChatGPT was the following: write a step by step tutorial on building a chatbot using yo teams\nAnd this was the outcome:\nThe result# Install Node.js and npm on your computer if you don\u0026amp;rsquo;t have them already. Yo Teams is built on top of Yeoman, a scaffolding tool for web development projects that runs on Node.js.\nInstall Yo Teams globally by running the following command in your terminal:\nnpm install -g yo @microsoft/generator-teams This will install Yo Teams and its dependencies on your system.\nCreate a new directory for your project and navigate to it in your terminal.\nRun the Yo Teams generator by typing the following command:\nyo teams This will launch the Yo Teams wizard, which will guide you through the process of creating a new Teams project.\nSelect the \u0026amp;ldquo;Bot\u0026amp;rdquo; option from the wizard menu. This will create a new bot project template with all the necessary files and configurations.\nFollow the prompts to enter your bot\u0026amp;rsquo;s display name, description, and other details.\nChoose the language you want to use for your bot. Yo Teams supports several popular programming languages, including TypeScript, JavaScript, and C#.\nChoose the messaging extension option if you want to create a bot that can be used as a messaging extension within Teams. This allows users to interact with your bot in the context of a chat conversation.\nChoose the authentication option that best suits your needs. Yo Teams supports several authentication providers, including Azure Active Directory and Bot Framework Authentication.\nOnce you have completed the prompts, Yo Teams will generate a new bot project for you with all the necessary files and configurations.\nOpen the project in your preferred code editor and navigate to the \u0026amp;ldquo;bot.ts\u0026amp;rdquo; file. This is where you will write the code for your bot.\nWrite your bot\u0026amp;rsquo;s logic using the Bot Framework SDK. The Bot Framework SDK provides a set of libraries and tools for building bots that can interact with users through text messages, voice commands, and other channels.\nTest your bot locally by running the following command in your terminal:\nnpm start This will start your bot on your local machine, allowing you to test its functionality in a Teams conversation.\nOnce you are satisfied with your bot\u0026amp;rsquo;s functionality, deploy it to the Teams platform using the following command: npm run build This will build your bot project and create a package that can be uploaded to the Teams App Store.\nUpload your bot package to the Teams App Store and make it available to your users. That\u0026amp;rsquo;s it! With these steps, you should now have a fully functional chatbot that can interact with users in Teams. The conclusion#As you can see it got me a pretty solid tutorial even on the first attempt for a tool which is not that famous as others might be. The only real error I could detect was line number 8 where it should speak about the bot part as we are building a bot and not a messaging extension. But I think it is a pretty good result for a first attempt. I think it can be used to write tutorials and it can be used to write code. I think it is a good tool to have in your toolbox. …","cover":"/images/069-cover.webp","date":"2023-03-14","lastmod":"2023-03-14","legacy":false,"markdown":"https://bisser.io/test-chatgpt-for-tutorial-writing/index.md","readingTime":4,"summary":"Read this post to see how to use ChatGPT for supporting you in writing tech tutorials","tags":["AI","Bot Framework","Teams Development"],"title":"Test ChatGPT for tutorial writing","uri":"/test-chatgpt-for-tutorial-writing/","url":"https://bisser.io/test-chatgpt-for-tutorial-writing/","wordCount":720},{"categories":["AI","Bot Framework"],"content":"In recent years, there has been a growing interest in chatbots and virtual agents as businesses seek to improve their customer service and automate their workflows. Microsoft, one of the leading tech companies in the world, offers two popular options for building chatbots and virtual agents: the Microsoft Bot Framework and Power Virtual Agents. In this article, we\u0026amp;rsquo;ll compare and contrast the two options to help you decide which one is right for your needs.\nOverview of the Microsoft Bot Framework and Power Virtual Agents#The Microsoft Bot Framework is a platform that allows developers to create intelligent bots for a wide range of platforms, including web, mobile, and even voice assistants like Amazon Alexa and Google Assistant. The Bot Framework provides developers with a set of tools and SDKs that enable them to create bots that can understand natural language and carry out complex conversations with users.\nPower Virtual Agents, on the other hand, is a no-code platform that allows business users to build chatbots and virtual agents without any programming knowledge. Power Virtual Agents offers a drag-and-drop interface that allows users to create and deploy chatbots quickly and easily.\nEase of Use#One of the key differences between the Bot Framework and Power Virtual Agents is their ease of use. While the Bot Framework provides developers with a robust set of tools for building chatbots, it requires programming skills and technical knowledge to use effectively. Developers need to have experience with programming languages like C# or JavaScript, as well as knowledge of machine learning and natural language processing.\nIn contrast, Power Virtual Agents is designed to be used by business users with no coding experience. The platform provides a simple drag-and-drop interface that allows users to create chatbots and virtual agents using pre-built templates and workflows. This makes it much easier for non-technical users to build and deploy chatbots.\nFunctionality#When it comes to functionality, the Bot Framework offers more flexibility and customization options than Power Virtual Agents. With the Bot Framework, developers can build custom chatbots that can handle complex conversations and integrate with other services and platforms. The Bot Framework also provides access to Azure Cognitive Services, which includes powerful tools for natural language processing, speech recognition, and sentiment analysis.\nPower Virtual Agents, on the other hand, is designed for simpler use cases and workflows. The platform provides pre-built templates and workflows that cover common use cases like customer service, IT support, and HR inquiries. While Power Virtual Agents can be customized to some extent, it doesn\u0026amp;rsquo;t offer the same level of flexibility as the Bot Framework.\nPricing#Both the Bot Framework and Power Virtual Agents offer a range of pricing options, depending on your needs. The Bot Framework is available for free, but users need to pay for any Azure services they use, such as Azure Cognitive Services or Azure Bot Service. Pricing for these services can vary depending on usage.\nPower Virtual Agents is also available for free, but users need to have a Microsoft 365 license to use the platform. This means that users will need to pay for a Microsoft 365 subscription, which can be expensive for larger organizations.\nConclusion#In conclusion, both the Microsoft Bot Framework and Power Virtual Agents have their strengths and weaknesses, depending on your needs. If you\u0026amp;rsquo;re a developer with technical skills and need to build complex, customized chatbots, the Bot Framework is the better option. However, if you\u0026amp;rsquo;re a business user without coding skills and need to build simple chatbots quickly, Power Virtual Agents is a great choice. Ultimately, the decision between the two platforms will depend on your specific needs and resources.\n","cover":"/images/068-cover.webp","date":"2022-09-12","lastmod":"2022-09-12","legacy":true,"markdown":"https://bisser.io/bot-framework-power-virtual-agents-comparison/index.md","readingTime":3,"summary":"This post covers the comparison between Bot Framework and Power Virtual Agents","tags":["AI","Bot Framework","Teams Development"],"title":"Bot Framework - Power Virtual Agents comparison","uri":"/bot-framework-power-virtual-agents-comparison/","url":"https://bisser.io/bot-framework-power-virtual-agents-comparison/","wordCount":602},{"categories":["AI","Bot Framework"],"content":"As I was building some demo bots quite recently, I was also dealing a lot with including user profile information in a bot using the Microsoft Graph and Bot Framework Composer !\nBuild the dialog#The first thing you need to do after creating a new bot in Composer (doesn\u0026amp;rsquo;t matter which template you choose), is to add a new trigger for the dialog. In this tutorial the dialog is called GetMyUserProfileDialog and will be used to get the necessary information from the Graph and display it using an Adaptive Card:\nThe first action we need in this dialog is to make sure that the user is authenticated. Therefore, we will begin a new dialog called OauthDialog which will make sure to authenticate the user if the user is not already logged in:\nWithin the OauthDialog, we simply use the action OAuth login which takes the connection name of the OAuth Connection Setting, which you need to configure on your Azure Bot (follow this tutorial to configure everything):\nInstall and use the Microsoft Graph package#Now that the authentication flow is set up, we can install a package from the package manager in Composer to ease the use of the Microsoft Graph. Simply install the Microsoft.Bot.Components.Graph package as shown below:\nThis will then add more actions to your list of available actions in Composer. Now we can use the action \u0026amp;ldquo;Microsoft Graph Get Signed-in User\u0026amp;rsquo;s Profile\u0026amp;rdquo; which only takes the token as a parameter and you do not need to take care of the rest to connect to the Graph:\nThe second thing we need for our profile card is the user\u0026amp;rsquo;s profile picture. Again we take advantage of the Microsoft Graph package to retreive that, by using the \u0026amp;ldquo;Microsoft Graph - Get Profile Photo\u0026amp;rdquo; which takes the token and the user ID as parameters and returns the user profile picture to be used later on:\nCreate the Adaptive Card template#Now that we have all information we need, we can go ahead and create the Adaptive Card using the Adaptive Card Designer :\n{ \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;AdaptiveCard\u0026amp;#34;, \u0026amp;#34;$schema\u0026amp;#34;: \u0026amp;#34;http://adaptivecards.io/schemas/adaptive-card.json\u0026amp;#34;, \u0026amp;#34;version\u0026amp;#34;: \u0026amp;#34;1.3\u0026amp;#34;, \u0026amp;#34;body\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;${user.profile.displayName}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Medium\u0026amp;#34;, \u0026amp;#34;weight\u0026amp;#34;: \u0026amp;#34;Bolder\u0026amp;#34; }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Container\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;ColumnSet\u0026amp;#34;, \u0026amp;#34;columns\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Column\u0026amp;#34;, \u0026amp;#34;width\u0026amp;#34;: \u0026amp;#34;auto\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Image\u0026amp;#34;, \u0026amp;#34;url\u0026amp;#34;: \u0026amp;#34;data:image/png;base64,${user.photo}\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Large\u0026amp;#34;, \u0026amp;#34;horizontalAlignment\u0026amp;#34;: \u0026amp;#34;Center\u0026amp;#34; } ], \u0026amp;#34;horizontalAlignment\u0026amp;#34;: \u0026amp;#34;Center\u0026amp;#34; }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Column\u0026amp;#34;, \u0026amp;#34;width\u0026amp;#34;: \u0026amp;#34;stretch\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Given name: ${user.profile.givenName}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Surname: ${user.profile.surname}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Mail: ${user.profile.mail}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Jobtitle: ${user.profile.jobTitle}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Office: ${user.profile.officeLocation}\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true } ] } ] } ] } ], \u0026amp;#34;msteams\u0026amp;#34;: { \u0026amp;#34;width\u0026amp;#34;: \u0026amp;#34;Full\u0026amp;#34; } } After the card design is ready, we can simply copy the JSON payload into the value of a new property called turn.profileCard\nIMPORTANT: make sure to select {} object as a type\nNow the last thing we need is to send out the Adaptive Card using the Send a response action with the card payload attached as an attachment:\nTest the bot#After you have started or deployed your bot (depending if you\u0026amp;rsquo;re running a …","cover":"/images/067-cover.webp","date":"2022-03-25","lastmod":"2022-03-25","legacy":true,"markdown":"https://bisser.io/bot-framework-composer-series-4-send-a-user-profile-card/index.md","readingTime":3,"summary":"This post covers how to create a user profile card using Adaptive Cards and Bot Framwork Composer","tags":["AI","Bot Framework","Teams Development"],"title":"Bot Framework Composer Series - 4 - Send a user profile card","uri":"/bot-framework-composer-series-4-send-a-user-profile-card/","url":"https://bisser.io/bot-framework-composer-series-4-send-a-user-profile-card/","wordCount":618},{"categories":["AI","Bot Framework"],"content":"While there is the option to create a Microsoft Teams Task Module using code a already a while ago, you would exactly need to know how to properly use the various methods and actions in your bot project. Therefore, it\u0026amp;rsquo;s now possible to build a task module using Bot Framework Composer without writing (almost) any code!\nAs I also had the opportunity to demo the things covered in this post on the PnP call earlier this year, you can also follow along by watching the tutorial here:\nInstalling the Teams package in Composer#The first thing you need to do after creating a new bot in Composer (doesn\u0026amp;rsquo;t matter which template you choose), is to add the Microsoft.Bot.Components.Teams package using the package manager:\nNow that we have this package installed, you can see that another entry on the \u0026amp;ldquo;Add action\u0026amp;rdquo; menu appears called \u0026amp;ldquo;Microsof Teams\u0026amp;rdquo; which offers a variety of options to either work with messaging extensions, messages or task modules:\nTrigger the task module with a card button#The next bit we need is something which should trigger our task module. In this case we\u0026amp;rsquo;ll use a simple hero card which contains a button to trigger the task module. The hero card for this example looks like this and is part of the bot\u0026amp;rsquo;s greeting trigger:\n[HeroCard subTitle = If you want to order a pizza just click here: buttons = ${[orderTaskModuleFetchButton()]} ] As you might notice, this hero card refers to another function called orderTaskModuleFetchButton which we will need to define in the bot respones before we can continue. Therefore, we will need to add the following snippet to the bot responses common section:\n# cardActionTemplate(title, text, type, value) [CardAction Type = ${type} Title = ${title} Text = ${text} Value = ${value} ] # orderTaskModuleFetchButton() - ${cardActionTemplate(\u0026amp;#39;Order Pizza\u0026amp;#39;, \u0026amp;#39;OrderFetch\u0026amp;#39;, \u0026amp;#39;invoke\u0026amp;#39;, json({type: \u0026amp;#34;task/fetch\u0026amp;#34;, buttonId: \u0026amp;#34;OrderFetch\u0026amp;#34;}))} Creating a new Teams-specific trigger#So when a user clicks that button in the hero card, the bot should execute the onTaskModuleFetch action to present the user with a task module. This can be achieved by adding a new trigger to the dialog of type Microsoft Teams and with the event \u0026amp;ldquo;On task module fetch\u0026amp;rdquo;:\nTo make sure that this trigger is only triggered when a user clicks the button defined in the hero card above, we need to add a condition to this trigger to check if the id of the button clicked is the id defined in our hero card:\n=turn.activity.value.data.buttonId == \u0026amp;#34;OrderFetch\u0026amp;#34; The in the trigger \u0026amp;ldquo;On task module fetch\u0026amp;rdquo; we need to add a new action of type \u0026amp;ldquo;Send task module card response\u0026amp;rdquo; to actually send a new Adaptive Card within a task module after clicking the button. Add a new attachment of type Adaptive Card with the following content to that action:\n{ \u0026amp;#34;$schema\u0026amp;#34;: \u0026amp;#34;http://adaptivecards.io/schemas/adaptive-card.json\u0026amp;#34;, \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;AdaptiveCard\u0026amp;#34;, \u0026amp;#34;version\u0026amp;#34;: \u0026amp;#34;1.3\u0026amp;#34;, \u0026amp;#34;body\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Container\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Container\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;ColumnSet\u0026amp;#34;, \u0026amp;#34;columns\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Column\u0026amp;#34;, \u0026amp;#34;width\u0026amp;#34;: \u0026amp;#34;stretch\u0026amp;#34;, \u0026amp;#34;bleed\u0026amp;#34;: true, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Just select the type of pizza to order:\u0026amp;#34;, \u0026amp;#34;weight\u0026amp;#34;: \u0026amp;#34;Bolder\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Medium\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true } ] } ], \u0026amp;#34;bleed\u0026amp;#34;: true } ], \u0026amp;#34;bleed\u0026amp;#34;: true } ], \u0026amp;#34;bleed\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Input.ChoiceSet\u0026amp;#34;, \u0026amp;#34;choices\u0026amp;#34;: [ { \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;Diavolo\u0026amp;#34;, \u0026amp;#34;value\u0026amp;#34;: \u0026amp;#34;Diavolo\u0026amp;#34; }, { \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;Hawaii\u0026amp;#34;, \u0026amp;#34;value\u0026amp;#34;: \u0026amp;#34;Hawaii\u0026amp;#34; }, { \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;Prosciutto\u0026amp;#34;, \u0026amp;#34;value\u0026amp;#34;: \u0026amp;#34;Prosciutto\u0026amp;#34; }, { \u0026amp;#34;title\u0026amp;#34;: \u0026amp;#34;Margherita\u0026amp;#34;, \u0026amp;#34;value\u0026amp;#34;: …","cover":"/images/066-cover.webp","date":"2021-07-15","lastmod":"2021-07-15","legacy":true,"markdown":"https://bisser.io/bot-framework-composer-series-3-teams-task-modules/index.md","readingTime":5,"summary":"This post covers how to create a Microsoft Teams Task Module using Bot Framework Composer","tags":["AI","Bot Framework"],"title":"Bot Framework Composer Series - 3 - Teams Task Modules","uri":"/bot-framework-composer-series-3-teams-task-modules/","url":"https://bisser.io/bot-framework-composer-series-3-teams-task-modules/","wordCount":880},{"categories":["AI","Bot Framework"],"content":"Microsoft Bot Framework#In this section you\u0026amp;rsquo;ll find the list of all updates related to the Microsoft Bot Framework (check out the official blog post on all the updates from here ):\nBot Framework Composer# Bot Framework Composer 2.0 is GA Remember, in my blog post about Microsoft Build updates last year I reported, that Composer has been gone GA . Now 1 year forward, we now get the next major version of Composer with lots of great feautures and updates You can either download the desktop app from here for Windows , here for MacOS or here for Linux Bot Framework Composer 2.0 introduces new templates (both in C# \u0026amp;amp; Node (Preview)): Empty Bot Core Bot with Language Core Bot with QnA Maker Core Assistant Bot Enterprise Assistant Bot Enterprise Calendar Bot Enterprise People Bot Bot Framework Components are now available as a package management solution in Composer: You can now install reusable components built by Microsoft or the Bot Framework Community or you can even build your own reusable packages for your Bot Framework Composer based bots Publishing to Azure has been made easier The publishing process of your Composer built bots is getting a lot easier with the release of the integrated resource provisioning and publishing: New interaction types like speech and cards available in Composer to ease the authoring of text \u0026amp;amp; voice bots by having a rich authoring experience including SSML : New Adaptive Runtime for all Bot Framework bots (Composer \u0026amp;amp; SDK) which encapsulates many capabilities like multilingual support or access to Cognitive Services available Power Virtual Agent integration in Bot Framework Composer is now GA Consuming and developing skills in Composer has been improved and simplified Conversational AI Platform# Orchestrator deplaces Bot Framework Dispatch as a dispatching solution Conversational User Experience Guide has been released with lots of useful information on how to build a good CUX Azure Bot Service# Azure Bot Service Telephony Channel in preview Azure Monitor support in Azure Bot Service Customer Managed Encryption Keys available in Azure Bot Service Azure Cognitive Services#Translation# Translator announces general availability of Document Translation Conversational AI sessions from Build# Build intelligent applications infused with world-class AI Ask the Experts: Build intelligent applications infused with world-class AI Extend your Power Virtual Agents with Bot Framework Composer ","cover":"/images/065-cover.webp","date":"2021-05-26","lastmod":"2021-05-26","legacy":true,"markdown":"https://bisser.io/conversational-ai-updates-from-msbuild-2021/index.md","readingTime":2,"summary":"This post covers all the great announcements from this years Microsoft Build conference 2021","tags":["AI","Bot Framework"],"title":"Conversational AI updates from MSBuild 2021","uri":"/conversational-ai-updates-from-msbuild-2021/","url":"https://bisser.io/conversational-ai-updates-from-msbuild-2021/","wordCount":380},{"categories":["AI","Bot Framework"],"content":"This is the second part of my Bot Framework Composer blog series. If you want to know more about Adaptive Cards in Composer, take a look at the first part Introduction#While building chatbots using Bot Framework Composer I often encoutered the problem that I needed to store properties and use them within my dialogs for different purposes. Within the Bot Framework SDK, I would most probably use the state to store information which is not only valuable within a single dialog or turn, but for the whole conversation. The equivalent of the state in Composer is called \u0026amp;ldquo;memory\u0026amp;rdquo; which can be described as the bot\u0026amp;rsquo;s mind or brain.\nBut unlike within the SDK, the concept of storing properties is a bit different from the state approach, where you basically have user and conversation state. Therefore, this post will give you an overview on how to manage your properties accordingly within your Composer based chatbot.\nProperty scopes#Within Composer there are four different property scopes:\nuser conversation dialog turn In Composer, property names are always in the format \u0026amp;ldquo;scope.name\u0026amp;rdquo; (e.g.: user.firstName). Therefore, the scope of the property is actually part of the property\u0026amp;rsquo;s name. When setting a new property you\u0026amp;rsquo;ll need to make sure that you choose the correct scope, otherwise you might end up using a property which can\u0026amp;rsquo;t be used in the current context. This can happen if you create a property \u0026amp;ldquo;turn.choiceResult\u0026amp;rdquo; in one dialog which you want to access in another dialog. As the scope of this property is turn, the value can\u0026amp;rsquo;t be accessed outside of this particular turn. Therefore you would need to use another scope for your property to fulfill your use case. All of these scopes have a different property lifetime, which are described below\u0026amp;hellip;\nuser#The user scope is tied to the user. This is why properties in the user scope are stored indefinetly for a specific user. Use this scope if you want to store user information such as the following within your bot:\nGeneral information such as name, birthday, age, \u0026amp;hellip; Location information such as address, street, postal code, country, \u0026amp;hellip; Contact informaiton such as email address, telephone number, \u0026amp;hellip; To create a new property using the user scope, simply name your property user.propertyName (e.g.: user.name or user.age).\nconversation#In contrast to the user scope, the conversation scope is tied to one specific conversation (identified through the conversationID). Like the user scope, the properties in the conversation scope are kept forever, however they could be accessed by multiple users within the same conversation. Examples use cases for using the conversation scope may be:\nGeneral information about the conversation (e.g.: conversation language) Current topic of the conversation Wether the bot already asked a specific question within the conversation Poll responses given by users within a specific conversation If you want to create a new conversation-scoped property just use conversation.propertyName as the property\u0026amp;rsquo;s name (e.g.: conversation.topic).\nNOTE: The conversation scope is not always only bound to one specific user only. For instance, when your bot is used in a Microsoft Teams team or group conversation, multiple users are part of the same conversation and therefore share the same conversationID. So please use this scope accordingly.\ndialog#The dialog scope, as the name already suggests, is bound to the active dialog and all parent or child dialogs of the active one. Therefore, the properties in that scope are accessible until the last active dialog in that dialog stack ends (look at this doc for more information on how dialogs work). The following examples make perfect sense, when used in the dialog scope:\nAnswers to prompts within a given dialog which are used in further turns turn#The turn scope is bound to one specific turn within the conversation. A turn is basically described as handling one …","cover":"/images/064_cover.png","date":"2020-08-23","lastmod":"2020-08-23","legacy":true,"markdown":"https://bisser.io/bot-framework-composer-series-2-property-management/index.md","readingTime":4,"summary":"While building chatbots using Bot Framework Composer I often encoutered the problem that I needed to store properties and use them within my dialogs for different purposes. Within the Bot Framework SDK, I would most probably use the state to store information which is not only valuable within a single dialog or turn, but for the whole conversation. The equivalent of the state in Composer is called \"memory\" which can be described as the bot's mind or brain.","tags":["AI","Bot Framework"],"title":"Bot Framework Composer Series - 2 - Property management","uri":"/bot-framework-composer-series-2-property-management/","url":"https://bisser.io/bot-framework-composer-series-2-property-management/","wordCount":799},{"categories":["AI","Bot Framework"],"content":"Motivation#As a Bot Framework enthusiast, I was looking for ways how to speed up routines in my daily tasks. Therefore I decided to publish some nice little helpers together with my friends from the Bot Framework Community to speed up tasks when working on a bot a bit. And this is what we currently published:\nAll Visual Studio Code snippets can be downloaded from here .\nAll Visual Studio Code commands can be downloaded from here .\nSnippets#Currently we have snippets available for the following categories:\nBot Framework Web Chat LUIS (.lu) files Adaptive Cards Create a basic Web Chat HTML file structure - bf-wc-create-basic-hml#The snippet bf-wc-create-basic-hml creates a basic plain html/js web chat within an HTML file:\nCreate a Web Chat HTML file structure with advanced styling - bf-wc-create-style-html#The snippet bf-wc-create-style-html creates a plain html/js web chat within an HTML file including some styling options already added to the web chat:\nCreate a sample Language Understanding (.lu) file - bfc-lu-create#The snippet bfc-lu-create creates a the required structure within .lu files used for managing LUIS applications:\nCreate a sample Adaptive Card \u0026amp;ldquo;Activity Update\u0026amp;rdquo; - bf-ac-activityUpdate#Adds a activity update sample card to your project.\nCreate a sample Adaptive Card \u0026amp;ldquo;Input Form\u0026amp;rdquo; - bf-ac-inputForm#Initializes a new input form sample card to be used to gather input from users.\nCreate a sample Adaptive Card \u0026amp;ldquo;Weather Compact\u0026amp;rdquo; - bf-ac-weatherCompact#Creates the weather compact sample card to demo a weather card.\nCreate a sample Adaptive Card \u0026amp;ldquo;Expense Report\u0026amp;rdquo; - bf-ac-expenseReport#Provides you with the expense report sample card to include in your bot\u0026amp;rsquo;s project.\nCommands#At the moment we published one command which lets you import a new LUIS app usign the Bot Framework CLI from a .lu file (which you could create with our snippets) to make the LUIS deployment process far easier. It can be done like this:\nAll you need to do is to create a .lu file and populate it and then right-click it from the explorer view and select Import LUIS application fill out the details and the command will create a new LUIS application for you!\nIf you have any ideas or feeback, please feel free to share it here or do a PR 😎\n","cover":"/images/063-cover.webp","date":"2020-07-27","lastmod":"2020-07-27","legacy":true,"markdown":"https://bisser.io/visual-studio-code-extensions-for-bot-framework-devs/index.md","readingTime":2,"summary":"As a Bot Framework enthusiast, I was looking for ways how to speed up routines in my daily tasks. Therefore I decided to publish some nice little helpers together with my friends from the Bot Framework Community to speed up tasks when working on a bot a bit while working with VS Code.","tags":["AI","Bot Framework"],"title":"Visual Studio Code extensions for Bot Framework devs","uri":"/visual-studio-code-extensions-for-bot-framework-devs/","url":"https://bisser.io/visual-studio-code-extensions-for-bot-framework-devs/","wordCount":363},{"categories":["AI","Bot Framework"],"content":"Microsoft Bot Framework#In this section you\u0026amp;rsquo;ll find the list of all updates related to the Microsoft Bot Framework (check out the official blog post on all the updates from here ):\nBot Framework Composer# Bot Framework Composer is GA You can either download the desktop app from here for Windows , here for MacOS or here for Linux If you want to run Composer locally as a web-based component, you can download and build Composer from Github following this link Bot Framework Composer Docs are here Bot Framework Composer allows to build and export Bot Framework Skills or you can also export the Bot Framework Composer assets (lg, lu, settings and dialog files) which you can then plug into other bots: Bot Framework SDK# Bot Framework SDK v4.9 released - Release notes can be found here with a ton of updates: Adaptive Dialogs are GA Skills support Adaptive Dialogs and have improved support for SSO and OAuth Improvements around Microsoft Teams specific funtionality including previews for the Java SDK as well as the developer preview of SSO capabilities in Microsoft Teams Bot Telemtry improvments including the ability to map dialogs into Azure Application Insights Page View Events Health Check APIs available to see if a bot is still running CLI tools for Adaptive Dialogs available here Language Generation is now GA in C# and JS SDKs Adaptive Expressions is now GA in C# and JS SDKs Authentication improvments for bots and skills are now available to be used like support for certificate based authentication Generated Dialogs is in early preview stage [Bot Framework Adaptive Tool](Bot Framework Adaptive Tool) is in preview Azure Bot Service# Direct Line App Service Extension is now GA Human Handoff capabilities have been improved Alexa channel has been added natively into the Azure Bot Service (Kudos to Gary Pretty for doing that👍) Virtual Assistant# Virtual Assistant is now GA Bot Framework Composer can now be used to build Bot Framework Skills to be used in virtual assistant Azure Cognitive Services#Language Understanding# New update to the LUIS portal with improvements to the labelling expirience Container support for LUIS apps Upgraded machine learned entities which are replacing composite and simple entities DevOps support for language models Bot Framework Orchestrator enters private preview Read the full blog of LUIS announcements here .\nQnA Maker# New rich text editor support to streamline KB editing process RBAC support for knowledge bases Speech Services# Speech Services has now improved the accuracy of Speech to Text and Text to Speech Custom commands and pronunciation assessment features have been added to create advanced speech capabilities Conversational AI sessions from Build# Conversational AI powered Customer and Employee Virtual Assistants Accelerate bot development in Power Virtual Agents On demand content# Bot Framework Composer: Bot Framework’s new collaborative Conversational AI development environment Use the Efficiency of Low-Code with the Extensibility to Azure to Design World-Class Chatbots Conversational AI and human agents working together Author rich content in QnA Maker knowledge base and enable role based sharing ","cover":"/images/062-cover.webp","date":"2020-05-20","lastmod":"2020-05-20","legacy":true,"markdown":"https://bisser.io/conversational-ai-updates-from-msbuild-2020/index.md","readingTime":3,"summary":"This post covers all the great announcements from this years Microsoft Build conference 2020","tags":["AI","Bot Framework"],"title":"Conversational AI updates from MSBuild 2020","uri":"/conversational-ai-updates-from-msbuild-2020/","url":"https://bisser.io/conversational-ai-updates-from-msbuild-2020/","wordCount":499},{"categories":["AI","Bot Framework"],"content":"The Starting Point#I was previously dealing quite extensively with the topic Bot Framework \u0026amp;amp; Microsoft Teams, as Teams is becoming THE communication tool in the modern workplace. Myself, as well as we (the company I work for) have build quite a lot of bots, which are not targeting Teams exclusively but other channels like Web Chat or others as well. But I did a little project during the homeoffice time due to Covid-19 to finally build our very own bot which should serve me and my co-workers in our daily jobs. As we are quite dependent on Teams and do all of our calls, meetings and project work in Teams, I built a bot which is only targeting Teams at the moment. And this bot in it\u0026amp;rsquo;s first stage has 2 main use cases included:\nQnA Task management The QnA part is rather simple as it is utilizing LUIS \u0026amp;amp; QnA Maker to answer questions stored in a knowledge base. But for the task management part, I wanted to do something quite new on the platform: Teams Messaging Extensions . And those components are pretty useful in many use cases, may it be as a search based extension to grab stock images somewhere, or an action based extension to handle specific actions with it. And myself and many of my co-workers are dependent on a solid task management solution, I decided to \u0026amp;ldquo;modernize\u0026amp;rdquo; how can manage tasks right within a conversation. The awesome thing here is that with the solution shown in this post, we avoid the context-switch, meaning users do not need to go to another tool during a long running Teams conversation to note down a task they need to work on. All that happens now right from the conversation. So the following post describes how to setup your bot in a way to use a messaging extension to fulfill task management based on Microsoft To Do and Planner (but of course you can take the code and exhange the task management tools to your preferred solution).\nThe code is published in the Bot Builder Community GitHub repo and can be found here (feel free to use or contribute)\nCreate Azure Resources#This post will only describe the process of having a local bot running and a Bot Channels Registration which we will use to connect our Teams bot to our local running bot using ngrok (More infos on how to setup ngrok for local bot development can be found here ).\nAzure AD App Registration#The first thing we need is to setup a new Azure AD app registration, as we want to use the Microsoft Graph to handle the task management processing. Therefore we need to go over to our Azure portal and create a new Azure AD App registration (like shown here ):\nWhile creating your app registration you need to provied the url https://token.botframework.com/.auth/web/redirect as a redirect URI to establish a conncetion to the Bot Framework for grabbing your authentication token.\nNext up, we need to add some API permissions to our app to make sure we can use the Graph to perform certain tasks (don\u0026amp;rsquo;t forget to grant admin consent for those permissions after adding them):\nAzure Bot Channels Registration#After the Azure AD App Registration has been created, we can create a new Bot Channels Registration in the Azure portal:\nAfter it has been created, we need to add our previously created app registration to the OAuth Connection Settings of our bot:\nFrom here you need to provide the following details:\nAfter saving you can validate your service provider connection setting to see if you can connect to your AAD app registration and get a token from there:\nThe last thing we need to grab is the Microsoft App ID and App secret for the Bot Channels Registration which can be found from the Azure AD App Registration pane as well.\nCreate the Bot#As I would only like to demo the Teams bits in this post, I will create everything in an echo bot template, but you can of course use it in our existing bots or go with any other BF template. The first thing we need to do after the bot has been created in VS or VS Code is to add our MicrosoftAppId and …","cover":"/images/061-21.png","date":"2020-05-19","lastmod":"2020-05-19","legacy":true,"markdown":"https://bisser.io/bot-framework-teams-messaging-extensions-walkthrough/index.md","readingTime":19,"summary":"A step-by-step tutorial for building a Microsoft Teams messaging extension using the Microsoft Bot Framework to handle task management (To Do and Planer) directly within conversations!","tags":["AI","Bot Framework"],"title":"Bot Framework Teams Messaging Extensions Walkthrough","uri":"/bot-framework-teams-messaging-extensions-walkthrough/","url":"https://bisser.io/bot-framework-teams-messaging-extensions-walkthrough/","wordCount":3921},{"categories":["AI","Bot Framework"],"content":"The Problem#As I was using Microsoft Bot Framework Composer quite heavily in the past, I built a lot of bots and dialogs with it. Therefore, I want to take the opportunity to share all my learnings I had with this awesome tool with everyone in a blog series. In this part I want to cover something, which I often found difficult to handle in my bot: rich attachments like Adaptive Cards, as I was struggling a bit on how to implement them correct. As Composer is still in preview by the time of writing, it is totally understandable that some things are not yet shipped or documented. Therefore, this post should outline on how to use Adaptive Cards within Composer for your bots.\nImplementing Adaptive Cards in BF Composer#First of all we will create a brand new bot using the Echo Bot template:\nNow that our new bot has been created, we can take a look at the Main dialog, which essentially has 2 triggers:\nUnknown intent Action to perform when user input is unrecognized and if none of the \u0026amp;lsquo;on intent recognition\u0026amp;rsquo; triggers match recognized intent. Greeting Handle the events fired when a user begins a new conversation with the bot. Now when I built a bot, the first thing I do is that I want my bot to greet the user upon starting the conversation. But I don\u0026amp;rsquo;t want to do that using text only, but I want to create a wow-effect using an Adaptive Card. This way, you can share so much more details and information with your users than just sending some greeting text only. So in order to achieve this, we need to add an Adaptive Card. To create an Adaptive Card it\u0026amp;rsquo;s probably the easiest way to use the Adaptive Cards Designer as you can design your card using a visual interface rather than writing JSON:\nNow that we have our card, we need to switch back to Composer and edit our Bot responses, which will look like this in the beginning:\nThe Bot Responses let\u0026amp;rsquo;s us actually manipulate the .lg file used for the bot. If you want to dig deeper into what\u0026amp;rsquo;s possible with that just visit the Composer docs . In the edit mode of our Bot responses, we then need to paste in our Adaptive Card JSON like the following:\n# adaptivecardjson - ``` { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;AdaptiveCard\u0026amp;#34;, \u0026amp;#34;id\u0026amp;#34;: \u0026amp;#34;NewUserGreeting\u0026amp;#34;, \u0026amp;#34;backgroundImage\u0026amp;#34;: \u0026amp;#34;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACeCAYAAACvg+F+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowMzoxMyAxOTo0Mjo0OBCBEeIAAAG8SURBVHhe7dJBDQAgEMCwA/+egQcmlrSfGdg6z0DE/oUEw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phSTEsKYYlxbCkGJYUw5JiWFIMS4phCZm52U4FOCAVGHQAAAAASUVORK5CYII=\u0026amp;#34;, \u0026amp;#34;body\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Container\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Image\u0026amp;#34;, \u0026amp;#34;url\u0026amp;#34;: \u0026amp;#34;https://bisserio.blob.core.windows.net/img/bot_bisserio_card.png\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Stretch\u0026amp;#34; } ] }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;Container\u0026amp;#34;, \u0026amp;#34;spacing\u0026amp;#34;: \u0026amp;#34;None\u0026amp;#34;, \u0026amp;#34;backgroundImage\u0026amp;#34;: \u0026amp;#34;https://bisserio.blob.core.windows.net/img/sidebar_bg_blog_bisser_io.png\u0026amp;#34;, \u0026amp;#34;items\u0026amp;#34;: [ { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;id\u0026amp;#34;: \u0026amp;#34;title\u0026amp;#34;, \u0026amp;#34;spacing\u0026amp;#34;: \u0026amp;#34;Medium\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Large\u0026amp;#34;, \u0026amp;#34;weight\u0026amp;#34;: \u0026amp;#34;Bolder\u0026amp;#34;, \u0026amp;#34;color\u0026amp;#34;: \u0026amp;#34;Light\u0026amp;#34;, \u0026amp;#34;text\u0026amp;#34;: \u0026amp;#34;Hey, I\u0026amp;#39;m Steve - your digital assistant\u0026amp;#34;, \u0026amp;#34;wrap\u0026amp;#34;: true }, { \u0026amp;#34;type\u0026amp;#34;: \u0026amp;#34;TextBlock\u0026amp;#34;, \u0026amp;#34;id\u0026amp;#34;: \u0026amp;#34;body\u0026amp;#34;, \u0026amp;#34;size\u0026amp;#34;: \u0026amp;#34;Medium\u0026amp;#34;, \u0026amp;#34;color\u0026amp;#34;: …","cover":"/images/060_cover.webp","date":"2020-04-24","lastmod":"2020-04-24","legacy":true,"markdown":"https://bisser.io/bot-framework-composer-series-1-use-adaptive-cards/index.md","readingTime":5,"summary":"First part of a blo series dealing with Microsoft Bot Framework Composer. This post is all about how to handle Adaptive Cards right","tags":["AI","Bot Framework"],"title":"Bot Framework Composer Series - 1 - Use Adaptive Cards","uri":"/bot-framework-composer-series-1-use-adaptive-cards/","url":"https://bisser.io/bot-framework-composer-series-1-use-adaptive-cards/","wordCount":901},{"categories":["AI","Bot Framework"],"content":"Objectives#If you are building chatbots, the one thing you always need to keep in mind is the build useful bots. In most cases you will start by implementing a more or less simple QnA bot utilizing QnA Maker in your bot to answer commonly asked questions. And even with such a simple bot, which is \u0026amp;ldquo;only\u0026amp;rdquo; answering questions stored in a knowledge base, you would likely need to have some sort of analytics service, which indicates if your bot is performing well or not.\nIf you don\u0026amp;rsquo;t build bots that are actually used, you are not building bots\nTherefore, this blog post will walk you through the steps needed in order to add analytics via Azure Application Insights to your bot to track the bot\u0026amp;rsquo;s performance.\nPrepare the Bot#First of all, we to provision a new Application Insights instance in our Azure environment. This can be simply done by searching for \u0026amp;ldquo;Azure Application Insights\u0026amp;rdquo; in the Azure portal and create a new service instance. Atfer this has been provisioned, we need to grab the \u0026amp;ldquo;Instrumentation Key\u0026amp;rdquo; from the App Insights pane which we\u0026amp;rsquo;ll later on use within the bot to establish a communication between this service and our bot:\nNow after this you would need to follow this link to add all neceassary components to your bot to enable the logging into App Insights.\nAfter doing so you can go to your App Insights service in the Azure portal and execute this query from the \u0026amp;ldquo;Logs\u0026amp;rdquo; section:\ncustomEvents | where name == \u0026amp;#39;QnaMessage\u0026amp;#39; | extend answer = tostring(customDimensions.answer) | summarize count() by answer After executing this query, you should see the following result (with your answers):\nBut as you might guess, there is something missing from the above results. It would be far better if we would not only get the answer in there, but also the question, so we can build a list which holds each question and the corresponding answer. To achieve that, we need to adapt our bot a little as this link indicates.\nThe first thing we need to add a new class DemoQnAMaker.cs in our project, which should look like this:\npublic class DemoQnAMaker : QnAMaker { public DemoQnAMaker( QnAMakerEndpoint endpoint, QnAMakerOptions options = null, HttpClient httpClient = null, IBotTelemetryClient telemetryClient = null, bool logPersonalInformation = false) : base(endpoint, options, httpClient, telemetryClient, logPersonalInformation) { } protected override async Task OnQnaResultsAsync(QueryResult[] queryResults, Microsoft.Bot.Builder.ITurnContext turnContext, Dictionary\u0026amp;lt;string, string\u0026amp;gt; telemetryProperties = null, Dictionary\u0026amp;lt;string, double\u0026amp;gt; telemetryMetrics = null, CancellationToken cancellationToken = default(CancellationToken)) { var eventData = await FillQnAEventAsync(queryResults, turnContext, telemetryProperties, telemetryMetrics, cancellationToken).ConfigureAwait(false); // Get question var userquestion = turnContext.Activity.Text.ToString(); // Add new property eventData.Properties.Add(\u0026amp;#34;UserQuestion\u0026amp;#34;, userquestion); // Log QnAMessage event TelemetryClient.TrackEvent(QnATelemetryConstants.QnaMsgEvent, eventData.Properties, eventData.Metrics); } } After that, we need to change the code in the DemoBot.cs (or however your bot logic file is called) to use this new class instead of the default QnAMaker class:\nvar qnaMaker = new DemoQnAMaker(new QnAMakerEndpoint { KnowledgeBaseId = _configuration[\u0026amp;#34;QnAKnowledgebaseId\u0026amp;#34;], EndpointKey = _configuration[\u0026amp;#34;QnAEndpointKey\u0026amp;#34;], Host = _configuration[\u0026amp;#34;QnAEndpointHostName\u0026amp;#34;] }, null, httpClient, _telemetryClient); This implementation now makes sure, that all activities in which QnA Maker is involved, that all questions from the users will also be sent to App Insights for further analytics. Now after your bot is published to Azure, you can go ahead and test the bot in whatever channel you like, which will trigger App Insights to collect the telemetry data.\nCreate Queries and a Dashboard#Now the bot is …","cover":"/images/059_cover.webp","date":"2020-04-20","lastmod":"2020-04-20","legacy":true,"markdown":"https://bisser.io/building-bot-framework-analytics-dashboards-using-application-insights/index.md","readingTime":5,"summary":"If you are building bots which are not used - you are not building bots! So analyze your bot's performance with these little tricks","tags":["AI","Bot Framework"],"title":"Building Bot Framework Analytics Dashboards using Application Insights","uri":"/building-bot-framework-analytics-dashboards-using-application-insights/","url":"https://bisser.io/building-bot-framework-analytics-dashboards-using-application-insights/","wordCount":942},{"categories":[],"content":"Problem Statement#I wanted to automate the creation of my bots and the necessary services a bit. Therefore, I first took a look at what can be done in order to save time when working with LUIS. This post may be turning out to be the first of a many to come series about automating Bot Framework development and deployment. But first let\u0026amp;rsquo;s take a look at how one can leverage the BotFramework CLI in order to create, train and publish LUIS apps using only the CLI and not the portal.\nCreate new LUIS app and import .lu file using BF CLI#This section will outline how to create a new LUIS app from a .lu file as well as training it and publishing it all from the BotFramework CLI .\nConvert .lu to .json file#At first we need to create a new .lu file or reuse one which has already been created. For sample .lu files simply check out this link .\nTypically a .lu file looks as follows:\n\u0026amp;gt; LUIS application information \u0026amp;gt; !# @app.name = bisserioLUISapp \u0026amp;gt; !# @app.desc = LUIS app for bisserio \u0026amp;gt; !# @app.versionId = 0.1 \u0026amp;gt; !# @app.culture = en-us \u0026amp;gt; !# @app.luis_schema_version = 6.0.0 \u0026amp;gt; Help intent and its utterances # Help - help - i need help - please help - can you please help - what do you do - what is this bot for \u0026amp;gt; Greeting intent and its utterances # Greeting - hi - hey - hello - good afternoon - good evening - good morning \u0026amp;gt; BuySurface intent and its utterances # BuySurface - How can I buy {ProductType=Surface PRO} - I want to buy {ProductType=Surface PRO} - I want to buy {ProductType=Surface laptop} - Can I buy {ProductType=Surface PRO} online After all intents and utterances have been setup correctly int that file we need to convert this .lu file to a .json file to be able to import it later on by using the following command:\nbf luis:convert --in \u0026amp;#34;pathToLuFile\u0026amp;#34; --culture \u0026amp;#34;cultureCodeOfLuisApp\u0026amp;#34; --out \u0026amp;#34;pathToJsonFile\u0026amp;#34; NOTE: The culture code needs to be in the format like \u0026amp;ldquo;en-us\u0026amp;rdquo; or \u0026amp;ldquo;de-de\u0026amp;rdquo; to be correct.\nSee here for more details on this command.\nImport new LUIS application#Next we can import the previously created json file and create a new LUIS app from that json file using the following command:\nbf luis:application:import --endpoint \u0026amp;#34;https://\u0026amp;lt;region\u0026amp;gt;.api.cognitive.microsoft.com\u0026amp;#34; --subscriptionKey \u0026amp;#34;LuisSubscriptionKey\u0026amp;#34; --name \u0026amp;#34;LuisAppName\u0026amp;#34; --in \u0026amp;#34;pathToJsonFile\u0026amp;#34; NOTE: The subscriptionKey needs to be the authoringKey which you can get either from the Azure Portal or from the LUIS Portal . The region needs to be the Azure region you deployed your LUIS authoring service into.\nSee here for more details on this command.\nThis will create a new LUIS app and you should get the according App ID as a console output like this:\nApp successfully imported with id 2d79d034-8d67-46e7-a20e-ca087640d872.\nNow copy this id as you will need that later on.\nShow LUIS app#To verify if the import has been correct we can use the following command to show the LUIS app:\nbf luis:application:show --appId \u0026amp;#34;appIdFromPreviousCommand\u0026amp;#34; --endpoint \u0026amp;#34;https://\u0026amp;lt;region\u0026amp;gt;.api.cognitive.microsoft.com\u0026amp;#34; --subscriptionKey \u0026amp;#34;LuisSubscriptionKey\u0026amp;#34; See here for more details on this command.\nTrain LUIS app#After the application has been imported correctly we can train it before we publish it by executing this command:\nbf luis:train:run --appId \u0026amp;#34;appIdFromPreviousCommand\u0026amp;#34; --versionId \u0026amp;#34;0.1\u0026amp;#34; --endpoint \u0026amp;#34;https://\u0026amp;lt;region\u0026amp;gt;.api.cognitive.microsoft.com\u0026amp;#34; --subscriptionKey \u0026amp;#34;LuisSubscriptionKey\u0026amp;#34; See here for more details on this command.\nAfter that we can verify if the train command executed successfully by executing this command:\nbf luis:train:show --appId \u0026amp;#34;appIdFromPreviousCommand\u0026amp;#34; --versionId \u0026amp;#34;0.1\u0026amp;#34; --endpoint \u0026amp;#34;https://\u0026amp;lt;region\u0026amp;gt;.api.cognitive.microsoft.com\u0026amp;#34; --subscriptionKey \u0026amp;#34;LuisSubscriptionKey\u0026amp;#34; See here for more details on this command.\nThis should output something like the following: …","cover":"/images/058_cover3.png","date":"2020-03-06","lastmod":"2020-03-06","legacy":true,"markdown":"https://bisser.io/bot-framework-cli-for-luis-management/index.md","readingTime":4,"summary":"I wanted to automate the creation of my bots and the necessary services a bit. Therefore, I first took a look at what can be done in order to save time when working with LUIS. This post may be turning out to be the first of a many to come series about automating Bot Framework development and deployment","tags":["AI","Bot Framework"],"title":"Bot Framework CLI for LUIS Management","uri":"/bot-framework-cli-for-luis-management/","url":"https://bisser.io/bot-framework-cli-for-luis-management/","wordCount":736},{"categories":[],"content":"I am delighted so say, that I got accepted for this year’s SharePoint conference 2020 in Las Vegas. The event will take place from 17th to 22nd of May in total. Standard sessions will be presented May 19-21 and full day workshops will take place May 17, 18 and 22. This conference is a must-see if you want to learn anything about Office 365, SharePoint and OneDrive as there will be more than 150 speakers (Microsoft employees as well as industry-leaders and MVPs), more than 200 sessions (ranging from development focus to targeting IT pros and business users) and more than 20 full-day workshops, which allow you to get a deep dive into one specific topic. It’s a real honor for me to be part of this great conference, along with many leaders like Jeff Teper, Dan Holme or Vesa Juvonen, who will share their knowledge and their stories and vision about the products they are responsible for. If you want to hear the latest trends and information on the newest products \u0026amp;amp; features, make sure to book your ticket now. My session with the title “Building intelligent bots for your SharePoint Intranet: Best Practices from the trenches” will be a 60-minute session focusing on the topic developing solutions with the SharePoint Framework, bots and more primarily. In more detail, the session description is:\nMicrosoft offers multiple services to build a chatbot inside your modern workplace, however, if you start building bots without knowing the ins and outs of each platform, you might hit a wall fast. Join this session to learn what works, and what doesn’t when building a chatbot for Microsoft 365, especially for SharePoint (Online) and Teams powered by the Microsoft Graph. This session will cover everything from the Microsoft Bot Framework, Cognitive Services and the Conversational AI Platform to add value to your Microsoft 365 environment. Everyone attending this session will learn something about the real-world use cases and best practices for designing and implementing chatbot projects from the field. As an AI MVP specializing in bots, this session primarily focuses on the Microsoft Conversational AI platform, specially the Microsoft Bot Framework and Microsoft Azure Cognitive Services, to build sophisticated chatbots, which can then be integrated into the SharePoint (Online) based intranet.\nIf you want to be part of this year’s event you can simply register using this link and make sure to use the discount code BISSER to get a 50$ discount on your ticket. When registering you can choose between a lot of cool offers, where you can either get gift cards or surface devices and a XBOX ONE as a gift, so be sure to check out those offers (Seats are limited):\nShow and Package Options Early Early Bird Early Bird After Feb. 24th, 2020 Jan. 21st - Feb. 3rd, 2020 Feb. 4th - Feb. 24th, 2020 Full Conference Only $1,799 $1,849 $1,899 SHOW PACKAGE - 1 WORKSHOP $2,198 $2,248 2299 Includes full conference registration, Receive a choice of Cortana Enabled Amazon Echo or a $100 Hotel Gift Card Receive a $100 Hotel Gift Card ONE optional full-day workshop COMPLETE PACKAGE - 2 WORKSHOPS $2,647 $2,697 $2,747 Includes full conference registration, Receive a choice of Cortana Enabled Amazon Echo, a $150 Hotel Gift Card, Surface Headphones or XBOX ONE S Receive a $150 Hotel Gift Card TWO optional full-day workshops COMPLETE PACKAGE - 3 WORKSHOPS $3,096 $3,146 $3,199 Includes full conference registration, Receive a choice of Enabled Amazon Echo, a $200 Hotel Gift Card, XBOX ONE S, XBOX ONE X, Surface Headphones or Surface Go Receive a $200 Hotel Gift Card THREE optional full-day workshops Pre-conference OR Post-conference $749 $799 $799 Optional full-day Workshop In case you want to get the latest news and trends already before the conference, tune in to SharePoint TV. SharePointTV will be broadcast over Twitch Streaming on most Wednesdays from 10-11am. Twitch Streaming is the latest video presentation platform taking the IT world by storm. Twitch was initially …","cover":"/images/057_cover2.jpg","date":"2020-01-31","lastmod":"2020-01-31","legacy":true,"markdown":"https://bisser.io/speaking-at-sharepoint-conference-2020-in-las-vegas/index.md","readingTime":4,"summary":"Speaking at SharePoint Conference 2020 in Las Vegas","tags":["AI","Bot Framework"],"title":"Speaking at SharePoint Conference 2020 in Las Vegas","uri":"/speaking-at-sharepoint-conference-2020-in-las-vegas/","url":"https://bisser.io/speaking-at-sharepoint-conference-2020-in-las-vegas/","wordCount":807},{"categories":[],"content":"Problem Statement#When developing bots using the Bot Framework SDK v4 for JavaScript you certainly want to develop your bots locally using TypeScript, instead of doing the whole development within the Azure poral using the online code editor. But what might be annoying when doing that is that by default, you would need to run npm start for starting the bot. The only problem with that is, that you would need to restart the command again if you changed something in your code to be able that you can test the bot with the latest changes from the Bot Framework emulator.\nSolution#To avoid this, I was seeking for a way of auto-restarting the bot in the background upon every change/save I do from my code base. And the most easiest way of doing that, is to use a tool called Nodemon . So here are the steps you need to do for your bot project to be auto-reload enabled:\nInstall Nodemon \u0026amp;amp; ts-node#Assuming you have your bot project already setup locally, we need to install two dependencies:\nnpm i install -g ts-node Create nodemon.json#Within your project\u0026amp;rsquo;s root, you now need to create a new file called \u0026amp;ldquo;nodemon.json\u0026amp;rdquo; with the following content (make sure that the path to your index.ts file is correct):\n\u0026amp;#34;watch\u0026amp;#34;: [\u0026amp;#34;src\u0026amp;#34;], \u0026amp;#34;ext\u0026amp;#34;: \u0026amp;#34;ts\u0026amp;#34;, \u0026amp;#34;exec\u0026amp;#34;: \u0026amp;#34;ts-node ./src/index.ts\u0026amp;#34; } Run nodemon#Now you should be able to run the nodemon command within your favorite shell from your project\u0026amp;rsquo;s root and should see this screen:\nIf you have setup everything correctly, try to go ahead and change something in your code and just test the bot with the emulator, without restarting node.js. You should immediately see your changes in your bot without the need of reloading everything, which saves a lot of time and effort! Hope this makes your development cycle a bit easier as you don\u0026amp;rsquo;t need to restart everything after changing just a few lines of code\u0026amp;hellip; Happy coding!\n","cover":"/images/056_cover.webp","date":"2019-11-20","lastmod":"2019-11-20","legacy":true,"markdown":"https://bisser.io/local-typescript-bot-auto-reloading-using-nodemon/index.md","readingTime":2,"summary":"Local Typescript Bot Auto-Reloading using Nodemon","tags":["AI","Bot Framework"],"title":"Local Typescript Bot Auto-Reloading using Nodemon","uri":"/local-typescript-bot-auto-reloading-using-nodemon/","url":"https://bisser.io/local-typescript-bot-auto-reloading-using-nodemon/","wordCount":319},{"categories":[],"content":"Problem Statement#Nowadays, it\u0026amp;rsquo;s quite common to add a \u0026amp;ldquo;virtual assistant\u0026amp;rdquo; (a.k.a chatbot) to your public facing website. Almost every organization, especially the ones dealing with endusers (B2C market-oriented organizations) try to add value to their websites in form of a bot. And Microsoft has done a pretty good job, making it easy to build a bot, with little effort and almost no coding. But unfortunately, there is not a complete guide provided, on how to create the bot from the very first click until it can be deployed on to a public website. So this post, shall be one of a few in a blog post series, where I will tackle, the various deployment/integration options you have for your bot (like a webiste, like a SharePoint Online page, Microsoft Teams, \u0026amp;hellip;).\nQnA Maker and Azure Bot Creation#So the first thing we need is our bot, of course. So in order to create a bot, you need an Azure Subscription, where you have the permissions to create new resources in (but I won\u0026amp;rsquo;t go through that step, as this is very well documented in the docs .\nQnA Maker Knowledge Base#In order to create a knowledge base, we need to head over to the Azure Portal to create a new QnA Maker resource and fill out the details to fit your needs as shown here:\nNext up, we need to go to the QnA Maker portal , sign in with the account you used for creating the Azure resource and go to the \u0026amp;ldquo;Create a knowledge base\u0026amp;rdquo; page to create a new knowledge base along with the necessary details:\nSo in my case, I enabled the multi-turn extraction feature for my knowledge base and added a URL to a PDF to extract the questions and answers from. Another quite new feature is that you now can choose the actual language of the KB, which affects the chit-chat and the ranking algorithms of the KB which you create. Now upon entering all the details, you can go ahead and create your knowledge base. After the KB has been created, you can either alter the QnA pairs in there or if you are happy with the KB contents, you can go to the Publish page and publish your QnA Maker knowledgebase:\nAnd so after it has been published, the API endpoint gets available and is now ready to be consumed by your application/bot:\nAzure Bot Creation#So the next obvious step would be to create our bot. In the past we would need to create a bot from the Azure portal first and then add some lines of code to call QnA Maker to get the right answers for the users\u0026amp;rsquo; inputs, but this, fortunately, is a thing of the past. The simplest way of creating a QnA Maker integrated bot is to hit the \u0026amp;ldquo;Create Bot\u0026amp;rdquo; button right from the Publish page in the QnA Maker portal. So when you click that button, you will be redirected to the Azure portal and the creation pane of a new web app bot is shown. Now this creation pane is somewhat different compared to the one when you create a new bot from the Azure portal, as it has some attributes already pre-filled, like your QnA Auth Key and the regions and so on, so you basically just need to hit Create:\nAfter a couple of minutes, your new Azure Web App Bot should be created and you should be able to test it in the webchat right from the Azure Portal. So now the bot is ready, we can go to the next step and add it to our website.\nBot Integration Into Website#If you have a public facing website, it\u0026amp;rsquo;s quite easy to integrate a Azure bot into your website. First thing we need is to go to the Channels section in out bot\u0026amp;rsquo;s menu pane within the Azure portal and click on the \u0026amp;ldquo;Direct Line\u0026amp;rdquo; channel icon to enable it:\nUpon the \u0026amp;ldquo;Configure Direct Line\u0026amp;rdquo; page opens, copy one of the two secret keys and click done. Now you will be redirected back to the channels page, where you need to click \u0026amp;ldquo;Get bot embed codes\u0026amp;rdquo; in order to get the most easiest way of integrating a bot into a website - an IFrame embed code, which may look as follows:\n\u0026amp;lt;iframe …","cover":"/images/055_cover.webp","date":"2019-11-05","lastmod":"2019-11-05","legacy":true,"markdown":"https://bisser.io/integrate-qna-maker-bots-part-1-public-website/index.md","readingTime":6,"summary":"Integrate QnA Maker Bots - Part 1 - Public Website","tags":["AI","Cognitive Services"],"title":"Integrate QnA Maker Bots - Part 1 - Public Website","uri":"/integrate-qna-maker-bots-part-1-public-website/","url":"https://bisser.io/integrate-qna-maker-bots-part-1-public-website/","wordCount":1115},{"categories":[],"content":"Each year Microsoft is inviting intersted people from all over the globe to a big show, called Microsoft Ignite , where nearly 30.000 (you read correctly THIRTY THOUSAND) people gather together to see what\u0026amp;rsquo;s new for the various products and services Microsoft is offering. Me as a Conversational AI guy, I\u0026amp;rsquo;m quite excited on the news and announcements they\u0026amp;rsquo;ll share at the event, but du to the fact, there the amount of news is that big, one has a hard time following all the necessary news and announcements at a glance. That\u0026amp;rsquo;s why I compose a blog post tackling the various areas of Conversational AI in order to provide a comprehensive list of news and further links, to look through in order to dive into certain things being announced.\nBot Framework#Here is the list of all news and announcements concering the Bot Framework:\nBot Framework SDK# Bot Framework SDK v4.6 (GA) for C# \u0026amp;amp; JS along with updated docs and samples Bot Framework SDK for Microsoft Teams (GA) Bot Framework SDK for Skills (Preview) Adaptive Dialogs (Preview) Language Generation (Preview) Common Expression Language (Preview) Bot Framework for Power Virtual Agent (Preview) LivePerson integration New WeChat adapter Bot Framework Composer (Preview)#So this is where I not only want to add a bullet list of links, but I actually want to share my thoughts on that briefly (and I will for sure follow-up with one or more posts on that solution). Bot Framework Composer is a game changer in my eyes in the field of creating/developing bots, as it gives you the ability to sketch out and compose the whole bot (along with the dialogs and all that good stuff) within a visual interface instead of writing actual code. And the cool thing about that is, when you are done modeling your dialogs and the whole conversation(s) you can actually use Composer to create the bot solution\u0026amp;rsquo;s code and run it immediately to test it in the emulator or deploy it to Azure using the CLI for example, still without writing a single line of code. So if you are building bots (no matter if you are a developer or IT Pro or citizen developer or business user or whatever other role you have) you should definetly check out this really awesome tool as this will be making your life even more easier in terms of building smart and engaging bots with ease. So if you want to learn more, just take a look at this link and give it a go\u0026amp;hellip; Azure Bot Service# Direct Line Speech (GA) Direct Line App Service Extension (Preview) Bot Framework Solutions# Virtual Assistant Core Enterprise Assistant (Preview) Bot Framework Web Chat (GA)# BF Webchat v4 went GA Bot Framework CLI (GA)# New CLI released for managing Bot Framework bots and related services bundling the previously available standalone tools into one CLI Cognitive Services#Here is the list of all news and announcements concering the Cognitive Services:\nLanguage Understanding# General availability of the prediction endpoint V3 Prebuilt domains is now generally available (GA) Japanese prebuilt entities - age, currency, number, percentage are not support in V3 Italian prebuilt entities - age, currency, dimension, number, percentage resolution changed from V2 Enhance user experience in preview.luis.ai portal - revamped labeling experience to enable building and debugging complex models Advance language understanding capabilities New and expanded limits QnA Maker# Explicitly setting the language for all knowledge bases in the QnA Maker service Multi-Turn feature (GA) Batch testing support Must-See On-Demand Sessions# Azure AI Invent with purpose on Azure Azure AI: Powering new possibilities for every organization Bot Framework Three ways to build bots with Azure AI that can make you a hero in your organization A deep-dive into conversational AI using Azure Bot Service and Cognitive Services Create sophisticated, enterprise-ready bots from your existing data, with no code using Azure Cognitive Services QnA Maker Let’s build a …","cover":"/images/054_cover.webp","date":"2019-11-04","lastmod":"2019-11-04","legacy":true,"markdown":"https://bisser.io/ignite-2019-news-on-the-conversational-ai-platform/index.md","readingTime":4,"summary":"Ignite 2019 News on the Conversational AI Platform","tags":["AI","Bot Framework"],"title":"Ignite 2019 News on the Conversational AI Platform","uri":"/ignite-2019-news-on-the-conversational-ai-platform/","url":"https://bisser.io/ignite-2019-news-on-the-conversational-ai-platform/","wordCount":758},{"categories":[],"content":"The Background#So I had this idea already a couple of months to release or better open-source a SharePoint Framework WebPart which is capable of bringing your Bot Framework conversations (= your bot) to SharePoint (Online). Now I finally had the chance of publishing my webpart to the official SPFx samples GitHub repo to make it available for everyone. So if you want to try it out and integrate it into your SharePoint tenant, just clone the repo, and follow the instructions mentioned here and you should be able to get it up and running in a couple of minutes.\nThe WebPart#So as this is a SPFx webpart, you can integrate it quite easily on every modern page. After you\u0026amp;rsquo;ve added it you need to configure the webpart using it\u0026amp;rsquo;s property pane:\nProperties#So the following properties are available to alter the look and feel of your BF4 webchat webpart:\nName Description Direct Line Secret The direct line secret of your bot which you can get from the Azure Portal Background color of webchat This is the background color of the complete webchat window as a Hex value Bot messages background color Hex value for the bot messages background color Bot messages foreground color Hex value for the bot messages foreground color User messages background color Hex value for the user messages background color User messages foreground color Hex value for the user messages foreground color Sendbox background color Hex value for the sendbox background color Sendbox text color Hex value for the sendbox text color Avatar image used for bot This is the image which you can use as an icon next to each message coming from the bot Avatar initials used for bot Instead of using an icon you can also use initials to be displayed next to the bot\u0026amp;rsquo;s messages Avatar image used for user This is the image which you can use as an icon next to each message coming from the user (you could also enhance this and get the image from the Microsoft Graph) Avatar initials used for user nstead of using an icon you can also use initials to be displayed next to the user\u0026amp;rsquo;s messages Disable upload button If you like you can enable/disable to upload button to prevent users from uploading documents to the conversation So if you add/modify all those values to fit your needs you should be able to have a custom webchat component according to your CI/CD guidelines right in your SharePoint environment. The most crucial part of that is the Direct Line Secret, as this is used to establish the connection between your webpart and your bot - so make sure you use the right one.\nAnd I also have an idea for the enhancement of that, to show this on every page in a sitecollection or even hub site, so stay tuned for more to come:\nFinally, if you wanto to enhance the webpart, it\u0026amp;rsquo;s open source, so just fork the repo and adapt it and the make a PR from this repo here \u0026amp;hellip; Happy using!\n","cover":"/images/052-bot-frameworkv4-webpart-preview.png","date":"2019-10-03","lastmod":"2019-10-03","legacy":true,"markdown":"https://bisser.io/bot-framework-v4-spfx-web-part-released/index.md","readingTime":3,"summary":"Bot Framework v4 SPFX Web Part Released","tags":["AI","Bot Framework"],"title":"Bot Framework v4 SPFX Web Part Released","uri":"/bot-framework-v4-spfx-web-part-released/","url":"https://bisser.io/bot-framework-v4-spfx-web-part-released/","wordCount":509},{"categories":[],"content":"The Starting Position#Nowadays, styling is a hot topic. If it looks good - I\u0026amp;rsquo;ll use it is often the mindset of users. So it\u0026amp;rsquo;s very important to offer something very good-looking to be successful with what you do. And so it is with bots. The Microsoft Bot Framework team did a pretty good job in styling the webchat component which is looking pretty good out of the box: But companies often have the need to apply their CI/CD guidelines on whatever they use. So the white \u0026amp;amp; black look of the webchat component is often not exactly what they need. Therefore, the Microsoft Bot Framework v4 webchat is offering the possibility to be customized in terms of styling. This is a great way for devs to modify the look and feel of the webchat. In the BFv4 Webchat GitHub repo there is a very detailed documentation on how to style the webchat using CSS within the HTML code. But looking at the following table which was taken from here you can see, that the React component offers even more options in terms of customization:\nCDN bundle React Change colors ✔ ✔ Change sizes ✔ ✔ Update/replace CSS styles ✔ ✔ Listen to events ✔ ✔ Interact with hosting webpage ✔ ✔ Custom render activities ✔ Custom render attachments ✔ Add new UI components ✔ Recompose the whole UI ✔ So I was currently searching a while until I found the documenation on how to customize the webchat styling when using it as a React component, which I want to share. It\u0026amp;rsquo;s basically described here . The following list shows the default values, which, of course you can adapt to fit your needs.\nStyleSetOptions#The following samples show the default style set options which can be modified to style the React webchat component.\nColor and paddings#The default colors for the webchat background and paddings:\naccent: \u0026amp;#39;#0063B1\u0026amp;#39;, backgroundColor: \u0026amp;#39;White\u0026amp;#39;, cardEmphasisBackgroundColor: \u0026amp;#39;#F0F0F0\u0026amp;#39;, paddingRegular: 10, paddingWide: 10 * 2, subtle: \u0026amp;#39;#767676\u0026amp;#39; Word break#The defaults for word breaks:\nmessageActivityWordBreak: \u0026amp;#39;break-word\u0026amp;#39;, // \u0026amp;#39;normal\u0026amp;#39; || \u0026amp;#39;break-all\u0026amp;#39; || \u0026amp;#39;break-word\u0026amp;#39; || \u0026amp;#39;keep-all\u0026amp;#39; Fonts#The default fonts to be used:\nfontSizeSmall: \u0026amp;#39;80%\u0026amp;#39;, monospaceFont: fontFamily([\u0026amp;#39;Consolas\u0026amp;#39;, \u0026amp;#39;Courier New\u0026amp;#39;, \u0026amp;#39;monospace\u0026amp;#39;]), primaryFont: fontFamily([\u0026amp;#39;Calibri\u0026amp;#39;, \u0026amp;#39;Helvetica Neue\u0026amp;#39;, \u0026amp;#39;Arial\u0026amp;#39;, \u0026amp;#39;sans-serif\u0026amp;#39;]) Avatar#The default styling for the avatars of the user and the bot:\navatarSize: 40, botAvatarBackgroundColor: undefined, // defaults to accent color botAvatarImage: \u0026amp;#39;\u0026amp;#39;, botAvatarInitials: \u0026amp;#39;\u0026amp;#39;, userAvatarBackgroundColor: undefined, // defaults to accent color userAvatarImage: \u0026amp;#39;\u0026amp;#39;, userAvatarInitials: \u0026amp;#39;\u0026amp;#39; Bubble#The default configuration for the bubbles, which is used to render chat messages (NOTE: The bubble* are used for bot messages and the bubbleFromUser* are used for rendering user messages):\nbubbleBackground: \u0026amp;#39;White\u0026amp;#39;, bubbleBorderColor: \u0026amp;#39;#E6E6E6\u0026amp;#39;, bubbleBorderRadius: 2, bubbleBorderStyle: \u0026amp;#39;solid\u0026amp;#39;, bubbleBorderWidth: 1, bubbleFromUserBackground: \u0026amp;#39;White\u0026amp;#39;, bubbleFromUserBorderColor: \u0026amp;#39;#E6E6E6\u0026amp;#39;, bubbleFromUserBorderRadius: 2, bubbleFromUserBorderStyle: \u0026amp;#39;solid\u0026amp;#39;, bubbleFromUserBorderWidth: 1, bubbleFromUserNubOffset: \u0026amp;#39;bottom\u0026amp;#39;, bubbleFromUserNubSize: 0, bubbleFromUserTextColor: \u0026amp;#39;Black\u0026amp;#39;, bubbleImageHeight: 240, bubbleMaxWidth: 480, // screen width = 600px bubbleMinHeight: 40, bubbleMinWidth: 250, // min screen width = 300px, Edge requires 372px (https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/13621468/) bubbleNubOffset: \u0026amp;#39;bottom\u0026amp;#39;, bubbleNubSize: 0, bubbleTextColor: \u0026amp;#39;Black\u0026amp;#39; Markdown#The default styling for markdown:\nmarkdownRespectCRLF: true Rich Cards#The default styling for rich cards:\nrichCardWrapTitle: false, // Applies to subtitles as well Root#The default styling for the root properties:\nrootHeight: \u0026amp;#39;100%\u0026amp;#39;, rootWidth: …","cover":"/images/BotFrameworkWebChat_header.png","date":"2019-09-12","lastmod":"2019-09-12","legacy":true,"markdown":"https://bisser.io/bot-framework-v4-webchat-styling-options/index.md","readingTime":4,"summary":"Bot Framework v4 Webchat Styling Options","tags":["AI","Bot Framework"],"title":"Bot Framework v4 Webchat Styling Options","uri":"/bot-framework-v4-webchat-styling-options/","url":"https://bisser.io/bot-framework-v4-webchat-styling-options/","wordCount":838},{"categories":[],"content":"Problem statement#Imagine this: You are working on a Bot Framework bot and want to implement human handoff to give users the option to have a conversation with another human being if the bot is not able to answer the user\u0026amp;rsquo;s questions. Now there are many good samples out there for channels like Microsoft Teams for example which demonstrate how to bring in a human into the loop. But I was trying to find a way to tell the webchat control (via DirectLine) that a given point in the conversation it should do something (escalate to an agent).\nNow there was one thing I found which could do the trick for me: Custom Channel Data Property (you can find out what that is in detail here ). The article basically describes it as follows:\nSome channels provide features that cannot be implemented by using only message text and attachments. To implement channel-specific functionality, you can pass native metadata to a channel in the activity object\u0026amp;rsquo;s channel data property. For example, your bot can use the channel data property to instruct Telegram to send a sticker or to instruct Office365 to send an email.\nAs you can already see in that description, you can tell your bot\u0026amp;rsquo;s channel that it should do something for you. And that\u0026amp;rsquo;s the thing I needed. So I went for the docs to see on how to implement it in my .NET Echo Bot for testing purposes and found this article by the Microsoft Bot Framework Team instructing on how to send such a custom channel data object (it was written for Facebook but I surely can use it for my webchat scenario as well I thought). But upon reading this article I recognized something was odd: this article was written in March 2017 and used Bot Framework v3 instead of v4. This means that I cannot re-use that code as I would like because the majority of the implementation has changed.\nSo I had to look further and googled a couple of hours without any helpful results. My problem was that I needed a way to create a message and add the channel data property to that message before sending it to the channel.\nNormally, you would create a message like this in your .NET bot:\nawait turnContext.SendActivityAsync(MessageFactory.Text($\u0026amp;#34;Echo: {turnContext.Activity.Text}\u0026amp;#34;), cancellationToken); But the problem with this is that I have no option to add any properties to my MessageFactory.Text attribute here. Next thing I tried was to create a Json object which actually represented my channel data property and sent that via the exact same message as above to the webchat channel. And it got rendered as exactly that: a Json string containing my information which was provided to the user - not what I wanted, so I needed to look further. The docs also said nothing about the actual implementation in either .NET or JS the only thing they mention is how the format should look like. But this was not everything I needed to know\u0026amp;hellip;\nSolution#And after researching many Google pages, I suddenly found this issue on Github, which was exactly what I needed. I needed the following line as a starting point to get down the road I wanted to end:\nIMessageActivity message = Activity.CreateMessageActivity(); Now I could finally add the custom channel data property to my message before sending it out to the webchat channel using the following lines:\nmessage.Text = $\u0026amp;#34;Trying to connect to an agent\u0026amp;#34;; message.TextFormat = \u0026amp;#34;plain\u0026amp;#34;; message.ChannelData = new Dictionary\u0026amp;lt;string, object\u0026amp;gt; { [\u0026amp;#34;type\u0026amp;#34;] = \u0026amp;#34;connectAgent\u0026amp;#34;, [\u0026amp;#34;Data\u0026amp;#34;] = new Dictionary\u0026amp;lt;string, string\u0026amp;gt; { { \u0026amp;#34;AgentSkill\u0026amp;#34;, \u0026amp;#34;ChatBot\u0026amp;#34; } } }; await turnContext.SendActivityAsync(message, cancellationToken); And now that was what I needed. Now I could talk to my bot and whenever he is not able to give me an appropriate answer I can send the channel data property saying it should connect me to an agent:\nConclusion#After many hours of research I finally found a way on how to add custom channel properties to messages before …","cover":"/images/bfv4channeldata2.png","date":"2019-08-28","lastmod":"2019-08-28","legacy":true,"markdown":"https://bisser.io/using-custom-channel-data-in-bot-framework-v4/index.md","readingTime":4,"summary":"Using Custom Channel Data in Bot Framework v4","tags":["AI","Bot Framework"],"title":"Using Custom Channel Data in Bot Framework v4","uri":"/using-custom-channel-data-in-bot-framework-v4/","url":"https://bisser.io/using-custom-channel-data-in-bot-framework-v4/","wordCount":743},{"categories":[],"content":"As I teamed up with Albert-Jan Schot , Rick Van Rousselt \u0026amp;amp; Thomas Gölles to create a project called SelectedTech , where we discuss and share our knowledge on Office 365/Teams/SharePoint \u0026amp;amp; Bots and record that as webinars, we had the idea of doing something which would be a cool way of helping others with one of the Cognitive Service APIs - QnA Maker . The idea was to create a Postman collection which we\u0026amp;rsquo;ll share later on, to bundle all API endpoints for the QnA Maker to easily test and debug the API. The inspiration to this was coming from Jeremy Thake and his project on the Microsoft Graph Postman collection (Thanks for that Jeremy - great thing!) and we thought, why not doing a similar thing for QnA Maker as well since we are working with that in our webinar projects. So I sat down and created such a Postman collection which you can find in our GitHub repo . So this blog post should walk you through on how to use that for your own QnA Maker projects to ease the development and debugging phase a bit.\nSo if you want to see that in action, just watch our video:\nStep 1 - Set up your QnA Maker service#If you haven\u0026amp;rsquo;t done so already, you need to create your own QnA Maker instance. I won\u0026amp;rsquo;t walk you through that on my blog, because this is very well documented by Microsoft. So please follow the guide here to create your service and knowledgebase. Now make sure to insert some QnA pairs to your KB so we can see if we get the correct results back by our Postman collection.\nStep 2 - Set up Postman#Now there are actually 2 ways how you can use this Postman collection (choose either one of the following):\nStep 2.1 - Import Postman collection#If you want to import the current status of the collection which might be updated frequently you\u0026amp;rsquo;ll need to do the following (those steps are also described here ):\n1. Download and register for Postman .\n2. Click File | Import \u0026amp;hellip;.\n3. Select Import From Link.\n4. Paste the following two URLs and click Import after each.\nhttps://raw.githubusercontent.com/selectedtech/Samples/master/QnAMakerPostmanCollection/QnA%20Maker%20Postman%20Collection.postman_collection.json\nhttps://raw.githubusercontent.com/selectedtech/Samples/master/QnAMakerPostmanCollection/QnA%20Maker%20Environment.postman_environment.json\nYou should now see the QnA Maker Postman Collection collection on the left had side Collections pane.\n5. Click on the No environment drop down in top right hand corner.\n6. Select QnA Maker Environment.\n7. Click the eye icon to the the right and then click Edit.\n8. Enter in to the current (not initial) variables your values (e.g. Subscription Key, region, host, \u0026amp;hellip;)\nNow you should be ready to go and hit your QnA Maker API endpoints! But there is another more convenient way of adding the QnA Maker Postman collection to your Postman app\u0026amp;hellip;\nStep 2.2 - Import QnA Maker Postman template#Now if you want to go the more convenient way of adding this collection to your workspace, simply open the Postman app on your machine. Upon starting it, you should see a popup saying \u0026amp;ldquo;Create New\u0026amp;rdquo; on the top left side. Now switch to \u0026amp;ldquo;Templates\u0026amp;rdquo; and search for \u0026amp;ldquo;QnA Maker\u0026amp;rdquo; which should give you this screen:\nAfter clicking on it, you\u0026amp;rsquo;ll be asked if you want to \u0026amp;ldquo;Use this template\u0026amp;rdquo; (which you obviously want ;) ):\nNow after the collection has been imported, you\u0026amp;rsquo;ll need to add all of the variables (keys, IDs, \u0026amp;hellip;) to your \u0026amp;ldquo;QnA Maker Environment\u0026amp;rdquo; (top right corner in the Postman client) and you should be good to go to hit the API endpoint now.\nDisclaimer: This is an open source project which everyone is allowed to contribute to. Feel free to open PRs on the GitHub repo and we would be happy to get more functionality into this anytime soon 😉\n","cover":"/images/capture20190711110720137.png","date":"2019-07-11","lastmod":"2019-07-11","legacy":true,"markdown":"https://bisser.io/qna-maker-postman-collection-template-now-available/index.md","readingTime":3,"summary":"QnA Maker Postman Collection-Template now available","tags":["AI","Bot Framework"],"title":"QnA Maker Postman Collection-Template now available","uri":"/qna-maker-postman-collection-template-now-available/","url":"https://bisser.io/qna-maker-postman-collection-template-now-available/","wordCount":630},{"categories":[],"content":"As every year, Microsoft is hosting it\u0026amp;rsquo;s Build conference again in Seattle aiming at showing the world all news around the latest developer tools and tech. As there is a ton of news, as usual, this blog post should give you an overview on the news and infos on the Conversational AI announcements at Build:\nBot Framework# Adaptive Dialog | docs | C# samples :: Simplify the development of sophisticated dialogs by dynamically updating as the conversation unfolds. This is especially useful when the context of conversation is switched or if there are interruptions in the middle of a conversation. Language Generation | docs | C# samples :: Streamlines the creation of smart and dynamic bot responses by constructing meaningful, variable and grammatically correct responses that a bot can send back to the user. Common Expression Language | api :: Both Adaptive dialogs and Language Generation rely on and use a common expression language to power bot conversations. Botkit :: Major version update with support for Bot Framework Emulator, Azure Bot Service. New model for handling interruptions and composable dialogs. Bot Framework Channels Enhanced Speech capabilities, Direct Line Speech Channel – (private preview) Streamlined integration of the Bot Framework and Microsoft\u0026amp;rsquo;s Speech Services in Azure Bot Service as a new channel, with support for custom wake words and bi-directional speech and text. To sign up, add the Direct Line Speech channel to your Azure Bot Service. SDK Channel adapters available here - New platform adapters for Web chat, Slack, Webex, Facebook, Google Hangouts and Twilio SMS. Work with Bot Framework V4 SDK (JS only). Additional new adapters put together by the BotBuilderCommunity Bot Framework Skills Skills include language models, dialogs, and cards that can be reusable across bots. Examples include productivity (calendar, email and task productivity- powered by Microsoft Graph), industry (point of interest, and automotive), and custom. Virtual Assistant Template This template incorporates the previous Enterprise Template and brings together all of the best practices and supporting components identified through building advanced assistant-like conversational experiences. It greatly simplifies the creation of a new bot project including: basic conversational intents, Dispatch integration, QnA Maker, Application Insights and an automated deployment. Bot Framework Emulator Bot Inspector, a new ability to debug live conversations in your bots on any channel or adapter - Microsoft Teams, Slack, Cortana, Facebook Messenger, Skype, etc. Language Understanding (LUIS)# Preview of V3 API migration guide The query prediction endpoint APIs have changed. Use this guide to understand how to migrate to version 3 endpoint APIs. This V3 API provides the following new features, which include significant JSON request and/or response changes: External entities Dynamic lists Prebuilt entity JSON changes Improved analytics dashboard Find and fix problems with your trained app\u0026amp;rsquo;s intents when you are using example utterances. The summary dashboard displays overall app information, with highlights of intents that should be fixed. Review Dashboard analysis is an iterative process, repeated as you change and improve your model. Improved prebuilt domains This reference provides information about the prebuilt domains , which are prebuilt collections of intents and entities that LUIS offers. QnAMaker# QnAMaker updates New! Extraction pipeline: Now you can extract hierarchical information from URLs, files and SharePoint New! Intelligence: Contextual ranking models, active learning suggestions New! Conversation: Multi-turn conversations in QnA Maker See this sample to create a multi-turn QnA Maker bot Cognitive Services# A deep dive into what\u0026amp;rsquo;s new with Cognitive Services If you want to check out the sessions related to the Conversational AI platform, here is a quick reference which sessions may be relevant:\nVision Keynote by …","cover":"/images/BotFrameworkDiagram.png","date":"2019-05-09","lastmod":"2019-05-09","legacy":true,"markdown":"https://bisser.io/microsoft-build-2019-updates-on-conversational-ai/index.md","readingTime":4,"summary":"Microsoft Build 2019 updates on Conversational AI","tags":["AI","Bot Framework","Cognitive Services"],"title":"Microsoft Build 2019 updates on Conversational AI","uri":"/microsoft-build-2019-updates-on-conversational-ai/","url":"https://bisser.io/microsoft-build-2019-updates-on-conversational-ai/","wordCount":689},{"categories":[],"content":"This post is something I wanted to do for a long time already. In my opinion, the topic of CI/CD can be very beneficial in terms of easier deployments and delivery of solutions. That is why I decided to run through the process of a creating a CI/CD pipeline for an Azure Bot Service based on Azure DevOps which I want to share with you with this post.\nPreparation#First of all, we need to prepare a couple of things before we can actually start building our CI/CD pipeline:\nCreate Azure DevOps repository#First of all, we need to create an Azure DevOps repository where we actually store our code. So head over to your Azure DevOps environment, which will be something like https://{tenantName}.visualstudio.com and create a new repository.\nThen we use the command line to clone the repo to our local disk and initialize the Git repo locally. To do that open your CMD of choice, navigate to a folder where you would like to store the source code and execute the command\ngit clone https://{tenantName}.visualstudio.com/{projectName/_git/{repoName} After the Git repo is initialized locally, we can now create a new VS bot project in that folder which will allow us to commit and push the code we are building locally to Azure DevOps for further processing. This way, we can develop and test our solution locally and if we say the code shall be deployed to Azure, we can just commit and push and the pipeline will do the rest, as we will see later on.\nMake sure to create the project in the root folder where you cloned your repo into.\nAfter the solution has been created, we can give it a go and test it locally, to see if the solution is building correctly. So hit F5 in Visual Studio and open the .bot file which has been created with the Bot Framework Emulator and type in a message.\nSo now that we have our repo stuff ready, we can go on and develop the bot logic locally. If we then say we are ready for production we can commit and push the changes to our Azure DevOps repo with the following 3 commands:\ngit add . git commit -a -m \u0026amp;#34;First commit\u0026amp;#34; git push origin master Now that the code has been committed and pushed we can check if the files have been created in Azure DevOps.\nCreate a Build Pipeline#After having our code in the Azure DevOps repo, we can set up our build pipeline to build that code in the repo automatically as well. So within your DevOps tenant navigate to pipelines and add a new Build pipeline. You\u0026amp;rsquo;ll need to select a template or start with an empty job (I\u0026amp;rsquo;d go with a template as it saves time). In our case, it makes sense to select the \u0026amp;ldquo;Azure Web App for ASP.NET template as we are building a C# bot.\nNow we would normally need to configure some settings for our build pipeline like the Azure Subscription we want to deploy the code to. But in our case we want to separate the build pipeline from the release pipeline to avoid any troubles afterward, so we delete the task \u0026amp;ldquo;Azure App Service Deploy\u0026amp;rdquo; from our task list completely.\nAfter that, we can save and queue our pipeline to make it ready to build our code.\nCreate a Release Pipeline#Now that we have our build pipeline ready, we need to create a release pipeline as well in order to actually deploy our built code to an Azure App Service. To do that head over to \u0026amp;ldquo;Pipelines\u0026amp;rdquo; and create a new release pipeline. Similar to the build pipeline we will go for the \u0026amp;ldquo;Azure App Service deployment\u0026amp;rdquo; template there.\nAfter creating, the pipeline will look pretty empty, but we will change that in a second.\nFirst of all, we need to add an artifact to the pipeline, which actually the finished \u0026amp;ldquo;product\u0026amp;rdquo; from our build pipeline. So select your project, source (which is our build pipeline) and the version you want to add to the pipeline (in my case I will go for the latest version).\nNow we added the artifact to the pipeline, we need to add some tasks to our stage for deploying the bot. But we will also create the necessary Azure resources …","cover":"/images/00_stephan_bisser_intro_devops_bot.png","date":"2019-02-07","lastmod":"2019-02-07","legacy":true,"markdown":"https://bisser.io/setting-up-a-build-and-release-pipeline-for-azure-bot-service-using-azure-devops/index.md","readingTime":8,"summary":"Setting up a Build and Release Pipeline for Azure Bot Service using Azure DevOps","tags":["AI","Bot Framework"],"title":"Setting up a Build and Release Pipeline for Azure Bot Service using Azure DevOps","uri":"/setting-up-a-build-and-release-pipeline-for-azure-bot-service-using-azure-devops/","url":"https://bisser.io/setting-up-a-build-and-release-pipeline-for-azure-bot-service-using-azure-devops/","wordCount":1655},{"categories":["AI","Cognitive Services"],"content":"I\u0026amp;rsquo;m super excited to announce something I have been building for a couple of months now. I teamed up with Matt Wade and Niels Gregers Johansen who are the initiators of the Periodic Table of Office 365 to build the Periodic Table of Azure Cognitive Services .\nThis table should help to understand which Cognitive Services are currently out there, including the following:\nCategorization Preview status indicators Links to the product pages As this is the first version for this kind of table, there will be more features in later releases, including description pages.\nI\u0026amp;rsquo;m super stoked to be a part of this awesome initiative and am therefore glad to get your feedback on this first version of the table. If you have any questions or ideas, which we could include in a later version, please feel free to reach out to me on Twitter , LinkedIn or via Mail .\n","cover":"/images/CogServicesTitle.png","date":"2019-01-02","lastmod":"2019-01-02","legacy":true,"markdown":"https://bisser.io/launching-the-periodic-table-of-azure-cognitive-services/index.md","readingTime":1,"summary":"Launching the Periodic Table of Azure Cognitive Services","tags":["AI","Bot Framework"],"title":"Launching the Periodic Table of Azure Cognitive Services","uri":"/launching-the-periodic-table-of-azure-cognitive-services/","url":"https://bisser.io/launching-the-periodic-table-of-azure-cognitive-services/","wordCount":151},{"categories":["AI","Bot Framework"],"content":"Developing bots can be a lot of work for those of you, who may not know which tools Microsoft offers for the various bot development stages. Fortunately, Microsoft released an article which contains the various tools for the following phases in your end-to-end bot development workflow. The following phases need to be gone through combined with the correct toolset supporting your successful bot development project:\nPlan Plan your bot\u0026amp;rsquo;s conversations and dialogs Take a look at the principles of bot design Use Chatdown to mock conversations before you actually start coding Build Use Ludown to bootstrap Language Understanding Use MSBot to keep track of service references Use LUIS CLI to create and manage LUIS applications Use QnA Maker CLI to create QnA Maker knowledgebases Use Dispatch CLI to create your own dipsatch models Test Use the Bot Framework Emulator V4 for testing your bot Publish Use the Azure CLI to create, download and publish your locally built bots to the Azure Bot Service Connect Use the Azure CLI to connect your bot to the various Azure Bot Service channels Evaluate Use the Azure Portal to improve the bot\u0026amp;rsquo;s capabilities and performance Use Application Insights to gain conversation-level reporting on user, message and channel data The full image can be downloaded here: End-to-End Bot Development Workflow Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/end2endheader.png","date":"2018-11-06","lastmod":"2018-11-06","legacy":true,"markdown":"https://bisser.io/end-to-end-bot-development-workflow-infographic/index.md","readingTime":2,"summary":"End-to-End Bot Development Workflow Infographic","tags":["AI","Bot Framework"],"title":"End-to-End Bot Development Workflow Infographic","uri":"/end-to-end-bot-development-workflow-infographic/","url":"https://bisser.io/end-to-end-bot-development-workflow-infographic/","wordCount":260},{"categories":["AI","Bot Framework"],"content":"In the modern AI-enabled world, digital agents or bots (aka chatbots) are an extremely hot topic, which every company no matter of their industry will at least think about at the moment. Many big software vendors like Microsoft, Amazon, Google, you name it are offering their own set of tools and services which developers and architects can use in order to build such a conversational AI interface (aka chatbot). But in this modern world, it is always about being fast and have a short time to market, which often results in releases which are not quite ready. And many AI devs develop bots as digital agents, but forget some really essential key parts, which actually make such a digital agent great and better compared to others. As I often get asked, what the main parts of a great chatbot are and I really spent a lot of time thinking about a good anatomy of a bot, I decided to sketch up the key parts which I think are essential when talking about an \u0026amp;ldquo;Enterprise Bot Design\u0026amp;rdquo; and which I want to explain in some words here as well, why they are important.\nRich Attachments#In order to design a more intuitive and common user experience, your bot should be able to receive and send rich attachments like pictures, videos or even emojis and interpret them. This makes the conversation more human-aligned as many users will communicate with the bot as they do with colleagues or friends. Therefore, the bot should be able to handle different input types apart from text.\nCards#Cards are a great way to let your users interact with your chatbot in an interactive and time-saving way as cards offer you the flexibility to give your users predefined input types like buttons combined with images and other UI elements. This will definitively raise your user adoption as users will be able to respond quicker and more intuitive.\nDialogs#Dialogs are the heart \u0026amp;amp; soul of your bot\u0026amp;rsquo;s conversation design. With dialogs, you can easily design the conversation for various bot use cases. If you want to have your bot being aware of multiple use cases, you can, of course, attach multiple dialogs to your bot\u0026amp;rsquo;s code and furthermore, you can stack dialogs and design dialog trees with parent-child structure.\nState#In order to give your bot some sort of memory, you can make use of a state service, which allows you to store both user and conversation states. This will help your bot to remember users and the conversations the bot had with the users in order to resume conversations and dialogs at a given point in time later as well.\nLanguage Understanding#Detecting the user\u0026amp;rsquo;s sentiment and act based on various intents is an essential skill almost every bot needs to have. With a service providing language understanding attached to your bot, you can make your \u0026amp;ldquo;intelligent\u0026amp;rdquo; and really understand what your users want to tell your bot. This also allows you to fire different dialogs within your conversation based on the user\u0026amp;rsquo;s intent.\nQnA#One of the easiest and fastest ways to actually check your bot\u0026amp;rsquo;s use case is to set up a QnA bot which is able to respond to questions stored in a knowledge base. Setting up such a QnA aware bot is not rocket science and it will actually help you verify if your users will use the bot or not. In addition to that, this is always an extremely helpful use case for employee onboarding or general HR topics.\nPersonality#Before implementing your bot you need to think about the way your bot should behave. Should the bot be a more formal bot or should it be some sort of \u0026amp;ldquo;new kid on the block\u0026amp;rdquo; with an attitude? Make sure to align your bot to your corporate communication strategy in order to avoid distraction. Furthermore, be aware that you should also inform your users beforehand that they are actually talking to a machine and not to a human otherwise user adoption could decrease massively.\nTap#Working with buttons and other quick response actions make it easier your users interacting with …","cover":"/images/SB_Cloudguy_Chatbot_Key_Parts.png","date":"2018-10-20","lastmod":"2018-10-20","legacy":true,"markdown":"https://bisser.io/key-parts-of-an-enterprise-bot-design/index.md","readingTime":6,"summary":"Key Parts of an Enterprise Bot Design","tags":["AI","Bot Framework"],"title":"Key Parts of an Enterprise Bot Design","uri":"/key-parts-of-an-enterprise-bot-design/","url":"https://bisser.io/key-parts-of-an-enterprise-bot-design/","wordCount":1156},{"categories":["AI","Bot Framework"],"content":"Almost a year ago I published one of my first infographics which should visualize the various components of the Microsoft Bot Framework. Back then, the Bot Framework was available in version 3.0 and as you can imagine, since then there have been a lot of updates and changes. Some weeks ago, Microsoft announced that version 4.0 is now GA with many improvements and enhancements. Therefore, I decided to update my version of the infographic in order to visualize what changed and what\u0026amp;rsquo;s important when talking about the Bot Framework, which I also renamed the \u0026amp;ldquo;Microsoft Conversational AI Landscape\u0026amp;rdquo;:\nThe full image can be downloaded here: Microsoft Conversational AI Landscape Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/bfinfoupdated.png","date":"2018-10-16","lastmod":"2018-10-16","legacy":true,"markdown":"https://bisser.io/microsoft-bot-framework-v4-infographic-updated/index.md","readingTime":1,"summary":"Microsoft Bot Framework v4 Infographic [UPDATED]","tags":["AI","Bot Framework"],"title":"Microsoft Bot Framework v4 Infographic [UPDATED]","uri":"/microsoft-bot-framework-v4-infographic-updated/","url":"https://bisser.io/microsoft-bot-framework-v4-infographic-updated/","wordCount":154},{"categories":["AI","Bot Framework"],"content":"Every year somewhere at the end of September Microsoft\u0026amp;rsquo;s biggest conference Ignite attracts thousands of people with a massive amount of news and big announcements. To keep up with all these awesome news is nearly impossible, as there is so much to explore in this very short period of time. Therefore, I try to sum up and link to all big announcements and news Microsoft made during the Ignite 2018 on the topic of conversational AI\u0026amp;hellip;\nBot Framework# Microsoft Bot Builder v4 SDK hits GA status New Azure Bot Service template \u0026amp;ldquo;Virtual Assistant\u0026amp;rdquo; introduced New Azure Bot Service template \u0026amp;ldquo;Enterprise Bot\u0026amp;rdquo; introduced More than 60 Bot Builder samples published for Bot Builder v4 SDK in .NET, JS Updated documentation on the Azure Bot Service \u0026amp;amp; MS Bot Framework for v4 SDK Bot Framework Web Chat control fully customizable Cognitive Services# QnAMaker supports Chit-Chat New built-in entity types for people names and geographic locations in LUIS Microsoft releases platform to build company-specific skills for Cortana Announcing Speech service: A new service combining all speech capabilities in a single endpoint Video Indexer hit GA status ","cover":"/images/ignite-generic.png","date":"2018-09-25","lastmod":"2018-09-25","legacy":true,"markdown":"https://bisser.io/msignite-updates-on-conversational-ai-at-a-glance/index.md","readingTime":1,"summary":"MSIgnite updates on conversational AI at a glance","tags":["AI","Bot Framework"],"title":"MSIgnite updates on conversational AI at a glance","uri":"/msignite-updates-on-conversational-ai-at-a-glance/","url":"https://bisser.io/msignite-updates-on-conversational-ai-at-a-glance/","wordCount":183},{"categories":["AI","Cognitive Services"],"content":"In the \u0026amp;ldquo;jungle\u0026amp;rdquo; of documentation and resources on the internet nowadays, it\u0026amp;rsquo;s tough to keep the overview and know where to look for in order to seek new information about certain topics. Microsoft is now trying to unify the documentation across their products in order to have 1 place to go for. But until that is fully established, we need to conduct multiple resources. To overcome this issue in the field of the Azure Bot Service, I already released a resource cheat sheet in order to have all important sources in your pocket. Now I did the same thing for Microsoft\u0026amp;rsquo;s Cognitive Services, in order to help you find the information you need quicker, get yours here:\nYou can also use the link list provided below:\nCognitive Services Docs Cognitive Services AI School GitHub Intelligent Kiosk Sample Feedback \u0026amp;amp; Support The full image can be downloaded here: Microsoft Cognitive Services Resource Cheat Sheet Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/csrescheatsheet.webp","date":"2018-09-01","lastmod":"2018-09-01","legacy":true,"markdown":"https://bisser.io/the-microsoft-cognitive-services-resource-cheat-sheet/index.md","readingTime":1,"summary":"The Microsoft Cognitive Services Resource Cheat Sheet","tags":["AI","Bot Framework"],"title":"The Microsoft Cognitive Services Resource Cheat Sheet","uri":"/the-microsoft-cognitive-services-resource-cheat-sheet/","url":"https://bisser.io/the-microsoft-cognitive-services-resource-cheat-sheet/","wordCount":198},{"categories":["AI","Bot Framework"],"content":"Nowadays, there is a ton of information out there for every service Microsoft has released, which is a good thing. But there are times when you search for something special, but you can\u0026amp;rsquo;t find it as there are too many sites and resources which you need to crawl to find what you are looking for. The same is true for the Azure Bot Service and the MS Bot Framework, as there is plenty of documentation, but it is spread over a couple of different sites.\nTherefore, the following cheat sheet should help you find the information you are looking for quicker to spend more time on the things you need to fulfill\u0026amp;hellip;\nYou can also use the link list provided below:\nAzure Bot Service Docs Microsoft Bot Framework AI School GitHub BotBuilder SDK Feedback \u0026amp;amp; Support The full image can be downloaded here: MS Bot Framework Resource Cheat Sheet Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/bfrescheatsheet.png","date":"2018-07-30","lastmod":"2018-07-30","legacy":true,"markdown":"https://bisser.io/the-microsoft-bot-framework-resource-cheat-sheet/index.md","readingTime":1,"summary":"The Microsoft Bot Framework Resource Cheat Sheet","tags":["AI","Bot Framework"],"title":"The Microsoft Bot Framework Resource Cheat Sheet","uri":"/the-microsoft-bot-framework-resource-cheat-sheet/","url":"https://bisser.io/the-microsoft-bot-framework-resource-cheat-sheet/","wordCount":194},{"categories":["AI","Cognitive Services"],"content":"\u0026amp;ldquo;Copy, paste\u0026amp;hellip; Bot!\u0026amp;rdquo; - This is the slogan of the QnAMaker.ai service, which is one of the Cognitive Services in the knowledge category. This service offers a very easy-to-use toolset for creating, populating and publishing knowledgebases for FAQs which can be consumed by the Azure Bot Service very easy to build smart QnA Bots in a very short period of time.\nAs the creation of such a QnAMaker knowledgebase is straightforward, the following infographic should help illustrate the process of creating, populating, testing and publishing a KB through the QnAMaker service.\nFrom FAQ to Bot in minutes. Build, train and publish a simple question and answer bot based on FAQ URLs, structured documents, product manuals or editorial content in minutes\u0026amp;hellip; The full image can be downloaded here: QnAMaker.ai Cheatsheet Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/qnamakercheatsheet.webp","date":"2018-07-10","lastmod":"2018-07-10","legacy":true,"markdown":"https://bisser.io/qnamaker.ai-cheat-sheet/index.md","readingTime":1,"summary":"QnAMaker.ai Cheat Sheet","tags":["AI","Bot Framework"],"title":"QnAMaker.ai Cheat Sheet","uri":"/qnamaker.ai-cheat-sheet/","url":"https://bisser.io/qnamaker.ai-cheat-sheet/","wordCount":174},{"categories":["AI","Cognitive Services"],"content":"A couple of months ago, I did a post about the Microsoft Cognitive Services with an infographic attached in order to better understand the various services and offerings in that area. Now a couple of months later, some things changed in that field, especially the offerings and the services (some disappeared, some have been merged and some appeared). Therefore, I updated my infographic in order to reflect the current services which are available:\nThe full image can be downloaded here\u0026amp;hellip; Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article in your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/cosvcinfo.png","date":"2018-06-25","lastmod":"2018-06-25","legacy":true,"markdown":"https://bisser.io/cognitive-services-infographic-updated/index.md","readingTime":1,"summary":"Cognitive Services Infographic [UPDATED]","tags":["AI","Bot Framework"],"title":"Cognitive Services Infographic [UPDATED]","uri":"/cognitive-services-infographic-updated/","url":"https://bisser.io/cognitive-services-infographic-updated/","wordCount":125},{"categories":["AI","Bot Framework"],"content":"A couple of weeks ago at the Microsoft Build conference (see this post for details on the announcements concerning AI), there were some cool new tools for the Bot Builder announced. These tools are already in preview and can be downloaded here .\nThe following table should give an overview of the new tools released:\nTool Description Chatdown Prototype mock conversations in markdown and convert the markdown to transcripts you can load and view in the new V4 Bot Framework Emulator MSBot Create and manage connected services in your bot configuration file LUDown Build LUIS language understanding models using markdown filese LUIS Build LUIS language understanding models using markdown files QnAMaker Create and manage QnAMaker.ai Knowledge Bases Dispatch Build language models allowing you to dispatch between disparate components (such as QnA, LUIS and custom code) LUISGen Autogenerate backing C#/Typescript classes for your LUIS intents and entities In order to visualize the tools and use cases you can use the following infographic which should explain these new tools and features a bit better by visualizing them:\nFeel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/Cloudguy_Bot_Builder_tools-1024x623.webp","date":"2018-05-22","lastmod":"2018-05-22","legacy":true,"markdown":"https://bisser.io/new-bot-builder-tools-infographic/index.md","readingTime":2,"summary":"New Bot Builder Tools [Infographic]","tags":["AI","Bot Framework"],"title":"New Bot Builder Tools [Infographic]","uri":"/new-bot-builder-tools-infographic/","url":"https://bisser.io/new-bot-builder-tools-infographic/","wordCount":220},{"categories":["AI","Bot Framework"],"content":"Microsoft\u0026amp;rsquo;s annual BUILD conference took again place from 7th - 9th May 2018 with a lot of new and awesome updates for the Azure AI platform. The following list should give you a short overview of all news and announcements:\nBot Builder SDK v4 now in preview: Bot Builder SDK v4 .NET Bot Builder SDK v4 JavaScript Bot Builder SDK v4 Python Bot Builder SDK v4 Java Bot Framework Emulator v4 now in preview: Updates and Improvements \u0026amp;ldquo;The new emulator includes features like an improved dynamic layout model, support for multiple bot configurations, simplified bot components management, and the ability to inspect responses from and deep link to connected services such as LUIS and QnA.\u0026amp;rdquo; Read more\u0026amp;hellip; Download here New Bot Builder tools now in preview: Chatdown - \u0026amp;ldquo;Prototype mock conversations in markdown and convert the markdown to transcripts you can load and view in the new V4 Bot Framework Emulator\u0026amp;rdquo; MsBot - \u0026amp;ldquo;Create and manage connected services in your bot configuration file\u0026amp;rdquo; LUDown - \u0026amp;ldquo;Build LUIS language understanding models using markdown files\u0026amp;rdquo; LUIS - \u0026amp;ldquo;Create and manage your LUIS.ai applications\u0026amp;rdquo; QnAMaker - \u0026amp;ldquo;Create and manage QnAMaker.ai Knowledge Bases\u0026amp;rdquo; Dispatch - \u0026amp;ldquo;Build language models allowing you to dispatch between disparate components (such as QnA, LUIS and custom code)\u0026amp;rdquo; LUISGen - \u0026amp;ldquo;Autogenerate backing C#/Typescript classesfor your LUIS intents and entities\u0026amp;rdquo; LUIS updates: Regex entities - \u0026amp;ldquo;Regex entities allow the identification of an entity in the utterance based on a regular expression\u0026amp;rdquo; Read more\u0026amp;hellip; Patterns - \u0026amp;ldquo;Patterns enable developers to effectively define intents without having to provide many utterances. Patterns could also encompass entities with variable length represented as Patterns.any entities\u0026amp;rdquo; Read more\u0026amp;hellip; QnAMaker.ai is now GA Now the QnAMaker.ai has a fixed pricing tier structure and full support options - go ahead and get started Cognitive Services updates: There have been some updates announced for various Cognitive Service APIs - please check out this link for details Project Conversation Learner: This is one of the new labs in the Cognitive Services portfolio, which lets you build conversational interfaces like bots that learn from example interactions. Read more\u0026amp;hellip; Project Personality Chat: This lab enhances your bot by adding small talk capabilities out-of-the box which makes it easier for you to build a comprehensive bot which is capable of doing smalltalk either professional, friendly or even humorous. Read more\u0026amp;hellip; ","cover":"","date":"2018-05-10","lastmod":"2018-05-10","legacy":true,"markdown":"https://bisser.io/azure-ai-platform-updates-from-build-2018/index.md","readingTime":2,"summary":"Azure AI Platform - Updates from Build 2018","tags":["AI","Bot Framework"],"title":"Azure AI Platform - Updates from Build 2018","uri":"/azure-ai-platform-updates-from-build-2018/","url":"https://bisser.io/azure-ai-platform-updates-from-build-2018/","wordCount":386},{"categories":["AI","Bot Framework"],"content":"The idea of this solution has come to my mind a couple of months ago when doing a couple of conference sessions. During the sessions, I had some questions coming from the audience, which is a good thing for me, but somehow I noticed, that those a more or less general questions rather than deep technical ones.\nTherefore, I thought it would be helpful for me as well as for the audience to have a much simpler way of asking me questions during speaking engagements, but also whenever someone has a question which might be answered by me. And which social media platform would be suited better than Twitter for exchanging short messages which might be of interest to a broader audience? So the idea of my #AskCloudguy Twitter Bot was born. Feel free to implement your very own Twitter Bot based on a specific hashtag in order to build an automated Twitter QnA service for your followers based on the following solution.\nSolution Overview#The main architecture of this solution is basically reflected by the following illustration:\nThe main idea is that there is an Azure Logic App which is checking for new tweets based on a given hashtag. Whenever the Azure Logic App gets triggered, it receives the tweet text as well as the tweet ID, by the Twitter connector. The tweet text is forwarded to the QnAMaker.ai service in order to generate an answer based on the tweet text. After the answer is received by the QnAMaker the Azure Logic App makes an HTTP POST request to the Azure Function and forwards the tweet ID as well as the answer in the HTTP body in order to reference the original tweet and being able to post a reply to the tweet rather than posting a new tweet. The Azure Function itself connects to the Twitter API via the Twit module and updates the original tweet by referencing the tweet ID and replies with the answer generated by the QnAMaker service.\nQnA Maker Service#The only thing you have to do is to create a new knowledgebase within the QnAMaker service and populate it with QnA pairs:\nAzure Function#The Azure Function is the service where the actual Twitter reply action happens. In order to connect to the Twitter API I decided to use the Node module Twit which needs to be installed by running the following command in the function\u0026amp;rsquo;s console first:\nnpm install twit After the module and it\u0026amp;rsquo;s dependencies have been installed, it\u0026amp;rsquo;s time to update the application settings of our Azure Function, but first we need to gather the keys and secrets by Twitter. So head over to the Twitter app portal and create a new app in order to gather the following keys and secrets:\nconsumer_key consumer_secret access_token access_token_secret After you have copied them somewhere, we need to add those four variables to our application settings of the Azure Function in order to keep these secrets and keys out of our code:\nNow that we have that in place, we can update/replace the code of the function by the following code:\nmodule.exports = function (context, req) { context.log(\u0026amp;#39;JavaScript HTTP trigger function processed a request.\u0026amp;#39;); var Twit = require(\u0026amp;#39;twit\u0026amp;#39;); var T = new Twit({ consumer_key: process.env[\u0026amp;#39;consumer_key\u0026amp;#39;], consumer_secret: process.env[\u0026amp;#39;consumer_secret\u0026amp;#39;], access_token: process.env[\u0026amp;#39;access_token\u0026amp;#39;], access_token_secret: process.env[\u0026amp;#39;access_token_secret\u0026amp;#39;], timeout_ms: 60*1000, // optional HTTP request timeout to apply to all requests. }); if (req.query.name || (req.body \u0026amp;amp;\u0026amp;amp; req.body.tweetID)) { context.res = { status: 200, /* Defaults to 200 */ body: \u0026amp;#34;Status \u0026amp;#34; + (req.query.name || req.body.tweetID) } // create the reply object var new_tweet = req.body.answer; var tweet = { status: new_tweet, in_reply_to_status_id: req.body.tweetID } // reply to the original tweet T.post(\u0026amp;#39;statuses/update\u0026amp;#39;, tweet, tweeted); function tweeted(err, data, response) { if (err) { context.log(err); } else { context.log(\u0026amp;#34;It worked!\u0026amp;#34;); } } } else { context.res = { status: 400, body: …","cover":"/images/Cloudguy_twitterbot_solution_design-1024x571.png","date":"2018-03-15","lastmod":"2018-03-15","legacy":true,"markdown":"https://bisser.io/build-your-very-own-twitter-qna-bot/index.md","readingTime":4,"summary":"Build your very own Twitter QnA Bot","tags":["AI","Bot Framework"],"title":"Build your very own Twitter QnA Bot","uri":"/build-your-very-own-twitter-qna-bot/","url":"https://bisser.io/build-your-very-own-twitter-qna-bot/","wordCount":786},{"categories":["AI","Bot Framework"],"content":" Microsoft has GAed the Azure Bot Service a couple of weeks ago, which was a huge step forward for all of us who are doing bots and AI apps in the Microsoft ecosystem. With this step, Microsoft is also pushing one more area into the Azure portal which is bots. Remember, during the preview, you had to create your bot in the Bot Framework portal and add your channels and everything related to your bot in that specific portal. Now with the transition to the GA status, they migrated that management tasks into the Azure portal, which definitively makes sense as the bots run in Azure. With that move, Microsoft also informed the customers that they need to manually \u0026amp;ldquo;migrate\u0026amp;rdquo; the bots, which have been created in the Bot Framework portal into Azure Bot Service bots which will be fully managed in the Azure portal. The migration flow as it is can be seen in the following steps:\n1. Bot Framework Portal - Start Migration#When you log in to the Bot Framework portal, you simply need to choose the bot which you want to migrate and click migrate:\nAfter clicking migrate, it will display you some basic information about your Azure environment:\nNow you need to accept the new terms of service (as usual) ;)\nAnd once your bot service migration is finished (which can take a couple of minutes), you will be presented with the following screen:\n2. Azure Portal - New Bot Management tools#Now your bot is fully migrated to the Azure Bot Service and it should be in the list of bots in the Azure portal, where you can click on it to manage it. When you view your bot\u0026amp;rsquo;s details in the portal you will see the following information:\nThis bot is migrated from the old Azure Bot Service. You can rollback the migration in order to have access to your old bot before 03/31/2018. After 03/31/2018, the old service will be deprecated.\nThis can be done by browsing to the Bot Framework portal and hitting \u0026amp;ldquo;Roll back migration\u0026amp;rdquo;:\nThis means that you can roll back your bot\u0026amp;rsquo;s migration until the end of March, in case you have any problems with your bot after the migration. And I\u0026amp;rsquo;m pretty sure you will run into errors when you have a bot which is running NodeJS. As I tried to test my bot in the web chat window from the Azure Portal, I faced the following issue after the migration \u0026amp;ldquo;couldn\u0026amp;rsquo;t send retry\u0026amp;rdquo;:\nSo I debugged the bot and quickly found the error in the debug console:\nAs the bot has been migrated, you also need to re-install all your dependencies (at least for NodeJS bots) in order to have them act properly again. So the easiest way to do this is to navigate to the Kudu console (which can be found on your bot\u0026amp;rsquo;s advanced settings page in the Azure Portal \u0026amp;ldquo;Advanced Tools\u0026amp;rdquo;) or you can simply navigate to https://.scm.azurewebsites.net/ debugconsole and there you have to navigate \u0026amp;ldquo;D:\\home\\site\\wwwroot\\messages\u0026amp;rdquo; and execute \u0026amp;ldquo;npminstall\u0026amp;rdquo; as follows:\nAfter the installation of the dependencies have been successfully installed you should be good to go to test your bot again and it should be up and running:\nThis is something quite obvious but you might forget about it when migrating and therefore it could cause a lot of problems, when your bot is not responding\u0026amp;hellip;\n","cover":"/images/capture20180306143706148-1024x193.png","date":"2018-03-08","lastmod":"2018-03-08","legacy":true,"markdown":"https://bisser.io/migrate-your-bot-framework-or-azure-bot-service-preview-bot-to-azure-bot-service-the-right-way/index.md","readingTime":3,"summary":"Migrate your Bot Framework or Azure Bot Service preview bot to Azure Bot Service the right way","tags":["AI","Bot Framework"],"title":"Migrate your Bot Framework or Azure Bot Service preview bot to Azure Bot Service the right way","uri":"/migrate-your-bot-framework-or-azure-bot-service-preview-bot-to-azure-bot-service-the-right-way/","url":"https://bisser.io/migrate-your-bot-framework-or-azure-bot-service-preview-bot-to-azure-bot-service-the-right-way/","wordCount":562},{"categories":["AI","Bot Framework"],"content":"Have you ever faced the issue of looking at more than 200.000 lines of code after creating a freshFunctions Bot via theAzure Portal? Well, I have unfortunately and I didn\u0026amp;rsquo;t know where to put my code in this massive amount of NodeJS code. As a lightweight developer, I am not that familiar in reading someone else\u0026amp;rsquo;s code so I didn\u0026amp;rsquo;t want to spend hours in studying the code below in order to get an idea where to put my code into. But I found a solution to this problem which you\u0026amp;rsquo;ll see below.\nBut then I started debugging. Well, not the code but the Azure Portal ;) And after a while, I found the solution to my problem. Looking at the navigation pane to the right in the portal you can view the solution\u0026amp;rsquo;s files. And when you create a bot via the Azure Portal with a NodeJS template it usually comes with the following files:\nNow if you click on the index.js file which is apparently already open it gets reloaded in the portal and somehow the 200.000 lines of meaningless (at least to me meaningless) code transform into 42 lines of meaningful code, isn\u0026amp;rsquo;t that awesome? ;)\nSo now you should be able to start adding more lines of code in there to actually develop your bot\u0026amp;rsquo;s logic… Happy coding! If you still face this issue feel free to get in touch with me\u0026amp;hellip;\n","cover":"/images/capture20180206144209891-1024x333.png","date":"2018-02-08","lastmod":"2018-02-08","legacy":true,"markdown":"https://bisser.io/solving-the-problem-of-too-much-lines-of-code-for-a-fresh-azure-functions-bot/index.md","readingTime":2,"summary":"Solving the problem of too much lines of code for a fresh Azure Functions Bot","tags":["AI","Bot Framework"],"title":"Solving the problem of too much lines of code for a fresh Azure Functions Bot","uri":"/solving-the-problem-of-too-much-lines-of-code-for-a-fresh-azure-functions-bot/","url":"https://bisser.io/solving-the-problem-of-too-much-lines-of-code-for-a-fresh-azure-functions-bot/","wordCount":236},{"categories":["AI","Bot Framework"],"content":"The terms \u0026amp;ldquo;Modern Workplace\u0026amp;rdquo; or \u0026amp;ldquo;Digital Workplace\u0026amp;rdquo; is something every one of us have heard about in the last couple of months probably. It is some trend which should improve the workplace situation in order to digitally transform the way we work and make it more easier to communicate and collaborate with others. Therefore, the use of smart services can be beneficial when it comes to really transforming your workplace into a modern one. As Microsoft offers a variety of services \u0026amp;amp; solutions in the AI world, these services can fit perfectly fine into that new world which helps your users adopt the new workplace easier. Therefore, this blog post is the first in series with much more to come which is dealing with the question how to actually integrate those AI services in the Microsoft AI ecosystem into your modern workplace to make it smarter and help your users in terms of adoption. In this first article, we will have a look at one major topic when talking about the modern workplace which is the \u0026amp;ldquo;Intranet\u0026amp;rdquo; and how to integrate some kind of digital assistant in the form of a bot into your SharePoint (Online) based intranet.\nIn order to implement the scenario into a SharePoint Online environment we need the following things: Office 365 Tenant (with global admin or at least SharePoint Online service admin permissions) Azure Subscription Development environment set up according to Set up your SharePoint Framework development environment As the Bot is our key component in this scenario we want to start building it. Therefore we have to go to the Azure Portal click \u0026amp;ldquo;+ New\u0026amp;rdquo; - Search for \u0026amp;ldquo;Bot\u0026amp;rdquo; and select \u0026amp;ldquo;Functions Bot\u0026amp;rdquo; as this is the serverless approach of building and deploying bots.\nAfter clicking \u0026amp;ldquo;Create\u0026amp;rdquo; we have to fill out some basic properties in order to give the bot a name, select the right subscription, region and template. My bot has the following specs, but please feel free to choose whatever you want (Attention: Stick with the \u0026amp;ldquo;Consumption Plan\u0026amp;rdquo; for the Hosting Plan as this defines that you actually pay what you use - so if you don\u0026amp;rsquo;t use anything as you might have turned off your bot you won\u0026amp;rsquo;t be charged. Please read Azure Functions scale and hosting for more details on the hosting plans).\nAs you can see I have gone for the NodeJS Question and Answer template as I feel comfortable in building NodeJS apps. But you can, of course, go for the C# template as well if you like. The reason why I chose the QnA template is simple - it comes with a predefined code base which has everything defined for connecting to the QnA Maker API (qnamaker.ai) which can be used to easily build a set of question and answer pairs as this is most probably a good starting point for an intranet bot. After your bot has been created we can navigate to the resource in the Azure Portal in order to start building it.\nBut first of all, we need to define our QnA knowledge base. So we need to navigate to QnAMaker where we want to create a new service and fill out a basic form:\nAs you can see I have left the URL(S) blank as I don\u0026amp;rsquo;t have a website hosting some kind of FAQ pages at the moment. You can, of course, add your URL(S) in here if you have some sort of knowledge base already or you can select \u0026amp;ldquo;STARTING FROM SCRATCH\u0026amp;rdquo; where you have the chance to enter your question and answer pairs manually on the next page. But you can also use my sample file which you can download here in order to have at least some basic questions and answers which might be asked by your users (please feel free to adapt it according to your needs). After filling out the form and clicking create you will be presented with your QnA pairs. You now have the chance to modify them or to add new ones, but basically, we are ready to train \u0026amp;amp; publish our service. So the first thing is to click on \u0026amp;ldquo;Save and retrain\u0026amp;rdquo; if you made any modifications (if you …","cover":"/images/capture20180206090342667-1024x514.png","date":"2018-02-06","lastmod":"2018-02-06","legacy":true,"markdown":"https://bisser.io/boost-your-modern-workplace-with-microsofts-ai-ecosystem-part-1-sharepoint-online-intranet-bot/index.md","readingTime":8,"summary":"Boost your Modern Workplace with Microsoft's AI ecosystem - Part 1 - SharePoint Online Intranet Bot","tags":["AI","Bot Framework"],"title":"Boost your Modern Workplace with Microsoft's AI ecosystem - Part 1 - SharePoint Online Intranet Bot","uri":"/boost-your-modern-workplace-with-microsofts-ai-ecosystem-part-1-sharepoint-online-intranet-bot/","url":"https://bisser.io/boost-your-modern-workplace-with-microsofts-ai-ecosystem-part-1-sharepoint-online-intranet-bot/","wordCount":1530},{"categories":["AI","Cognitive Services"],"content":"With the announcement of the GA status of the Language Understanding Intelligent Service a couple of weeks ago, I was thinking about how to easily enable people in using this awesome Cognitive Service. I was asked many times on how to easily use that service but I faced a lot of open questions and confusion. That\u0026amp;rsquo;s why I decided to create a cheat sheet to illustrate the process of creating, training and publishing a LUIS model in order to use it within a Bot or other apps which should act intelligent and understand the human language.\nA machine learning-based service to build natural language understanding into apps, bots, and IoT devices. Quickly create enterprise-ready, custom models that continuously improve [\u0026amp;hellip;] The full image can be downloaded here: LUIS.ai cheat sheet Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/luis_cheatsheet.png","date":"2018-01-24","lastmod":"2018-01-24","legacy":true,"markdown":"https://bisser.io/luis.ai-cheatsheet/index.md","readingTime":1,"summary":"LUIS.ai Cheatsheet","tags":["AI","Cognitive Services"],"title":"LUIS.ai Cheatsheet","uri":"/luis.ai-cheatsheet/","url":"https://bisser.io/luis.ai-cheatsheet/","wordCount":175},{"categories":["AI","Bot Framework"],"content":"\u0026amp;ldquo;Artificial intelligence productivity for every developer and every scenario\u0026amp;rdquo; - this is the slogan which is shown on the landing page of the Microsoft AI Platform . But many people don\u0026amp;rsquo;t know which services are included in this broad AI ecosystem. It is not only about Bots or Machine Learning - it\u0026amp;rsquo;s about much more like Cognitive Services, it\u0026amp;rsquo;s about the tools used for developing AI apps and the frameworks underneath all those great and intelligent services. That\u0026amp;rsquo;s why the following infographic should show all the services which are included in the Microsoft AI Platform to show the various solutions which can be used to develop intelligent applications.\nWith the Azure platform and productivity services, you can create the next generation of applications that span an intelligent cloud as well as an intelligent edge powered by AI. Use a comprehensive set of flexible AI services for any scenario, and enterprise-grade AI infrastructure that runs AI workloads anywhere at scale. Modern AI tools designed for developers and data scientists help you create AI solutions easily, and with maximum productivity. Read more\u0026amp;hellip; The full image can be downloaded here: Microsoft AI Platform Infographic Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/AI_platform_Infographic-1024x616.png","date":"2017-12-26","lastmod":"2017-12-26","legacy":true,"markdown":"https://bisser.io/microsoft-ai-platform-infographic/index.md","readingTime":2,"summary":"Microsoft AI Platform Infographic","tags":["AI","Bot Framework"],"title":"Microsoft AI Platform Infographic","uri":"/microsoft-ai-platform-infographic/","url":"https://bisser.io/microsoft-ai-platform-infographic/","wordCount":236},{"categories":["AI","Bot Framework"],"content":"Yesterday I wanted to deploy a new bot with the Azure Bot Service to start developing a new digital assistant within the Azure Bot Framework platform. But as I created my bot from the Azure portal I ran into a strange error upon testing the bot immediately, which you can see below:\nAs you can see the bot\u0026amp;rsquo;s function started, but it didn\u0026amp;rsquo;t finish successfully and in the test window I got the error message \u0026amp;ldquo;couldn\u0026amp;rsquo;t send retry\u0026amp;rdquo; which was quite strange as I didn\u0026amp;rsquo;t modify the code at all. I started to check if it\u0026amp;rsquo;s something in my Azure\u0026amp;rsquo;s region and the subscription but I also failed when deploying a new bot in another region with another subscription. So I asked the Azure support team for help and they immediately helped me solving the problem.\nSolution\nIf you run into this issue, go to your bot\u0026amp;rsquo;s **package.**json file and check the botbuilder package version:\nIf you see the same botbuilder version then please change it to 3.12.0 like shown below:\nNow you need to update your npm packages for your solution. So please go to https://.scm.azurewebsites.net and click on Debug console and choose CMD. Now you have to navigate to D:\\home\\site\\wwwroot\\messages where you need to execute npmupdate like shown below:\nWhen this operation has finished, you should be fine now and your bot should be starting to work now and you can develop and test it from now on, have fun!\nKudos to the Azure Support Team and **Andrea Orimoto **who immediately helped me with my problem!\nIf you still face the problem mentioned please refer to this ","cover":"/images/capture20171205145953029.png","date":"2017-12-06","lastmod":"2017-12-06","legacy":true,"markdown":"https://bisser.io/azure-bot-service-couldnt-send-error-on-emulator/index.md","readingTime":2,"summary":"Azure Bot Service Couldn't send error on emulator","tags":["AI","Bot Framework"],"title":"Azure Bot Service Couldn't send error on emulator","uri":"/azure-bot-service-couldnt-send-error-on-emulator/","url":"https://bisser.io/azure-bot-service-couldnt-send-error-on-emulator/","wordCount":269},{"categories":["AI","Bot Framework"],"content":"Microsoft\u0026amp;rsquo;s Bot Framework is a great platform for designing, developing and deploying bots for various use cases. As nowadays many people are familiar with bots and they get used to connect and communicate with bots via social media, it\u0026amp;rsquo;s a good opportunity to bring a service to the next level by adding a bot to it for a better communication service. In the past, t was very hard to achieve that as you would basically have to develop the bot on your own and connect all the different systems and platforms together to make the bot available to a broader audience. With the Bot Framework Microsoft released a platform where you only need to handle your bot\u0026amp;rsquo;s design and logic without thinking about the various systems and services in which your bot should be communicating with your users.\nThink of a bot as an app that users interact with in a conversational way. Bots can communicate conversationally with text, cards, or speech. A bot may be as simple as basic pattern matching with a response, or it may be a sophisticated weaving of artificial intelligence techniques with complex conversational state tracking and integration to existing business services. The Bot Framework enables you to build bots that support different types of interactions with users. You can design conversations in your bot to be freeform. Your bot can also have more guided interactions where it provides the user choices or actions. The conversation can use simple text strings or more complex rich cards that contain text, images, and action buttons. And you can add natural language interactions, which let your users interact with your bots in a natural and expressive way. Read more\u0026amp;hellip; The following infographic should provide you with a high-level overview of the Bot Framework including all necessary components:\nChannels Platforms \u0026amp;amp; SDKs Additional Services (Cognitive Services) Channels#Channels provide you with the ability to deploy your bot in various systems at the same time without the need to adapt yourbusiness logic within your bot. This makes it easy to build a bot which is capable of communicating with people via various channels and platforms to reach even more people with your bot.\nPlatforms \u0026amp;amp; SDKs#Microsoft lets you build your bot with C# or NodeJS and host it on Azure as or on your own infrastructure. Therefore you are flexible and have the choice how to develop and host your bot without being bound to one specific way of implementation.\nAdditional Services#As your bot needs to be intelligent as well, you need to add services to your bot which make your bot smart. Therefore, the Cognitive Services provided by Azure let you add either language understanding or voice recognition services along much more to your bot to make the interaction with your users more human.\nThe full image can be downloaded here Feel free to use it for internal use in your presentations or documents. The only point I ask you to do is to credit me and link this article to your documents where you use it. Please do not sell this as your own 😉\n","cover":"/images/botframework_infographic-1024x403.jpg","date":"2017-11-20","lastmod":"2017-11-20","legacy":true,"markdown":"https://bisser.io/bot-framework-101-with-infographic/index.md","readingTime":3,"summary":"Bot Framework – 101 (with Infographic)","tags":["AI","Bot Framework"],"title":"Bot Framework – 101 (with Infographic)","uri":"/bot-framework-101-with-infographic/","url":"https://bisser.io/bot-framework-101-with-infographic/","wordCount":516},{"categories":["AI","Cognitive Services"],"content":"One of the coolest Cognitive Services APIs is finally generally available: the Text Analytics API. If you have a look at **Survey 365 **you will see what awesome stuff the Text Analytics API lets you do. Like in this example, you can extract text and detect the sentiment score of a given text to see if it is rather positive or negative. And all that without coding a lot. You can see the official announcement from the Microsoft Azure team about the GA information below:\nAnd by the way, if you are interested in a quick demo on how you can use the Text Analytics API just head over to** Text Analytics API ** and enter your text to check the sentiment and extract the key phrases as I did below:\n","cover":"/images/capture20171013073731425.png","date":"2017-10-13","lastmod":"2017-10-13","legacy":true,"markdown":"https://bisser.io/cognitive-services-text-analytics-api-ga/index.md","readingTime":1,"summary":"Cognitive Services Text Analytics API GA","tags":["AI","Bot Framework"],"title":"Cognitive Services Text Analytics API GA","uri":"/cognitive-services-text-analytics-api-ga/","url":"https://bisser.io/cognitive-services-text-analytics-api-ga/","wordCount":131},{"categories":["AI","Cognitive Services"],"content":"During the work on my first infographic on Cognitive Services I had a hard time to get the right icons for all Cognitive Services and APIs as I used Visio to create it and there were no stencils for these services. So I decided to go with the icons, Sandro Pereira created, which are totally awesome, but unfortunately, there are some service icons missing. So I had to create the missing icons on my own in Visio, which resulted in a huge amount of working hours to get this done.\nSo I thought of creating a stencil set for all AI services and applications in the Microsoft AI ecosystem which I can use for all my future infographics. And as I\u0026amp;rsquo;m probably not the only one who will need those icons to create awesome Visio graphics, I want to share those stencils with you all!\nSo if you want to use them, please download the Visio stencils in my TechNet Gallery and create awesome graphics. To give you a quick glimpse of what you can expect from my stencils, the following image shows the current stencils and shapes for the various categories:\nAzure AI stencils (Cognitive Services \u0026amp;amp; Bot Framework)\nIf you have any questions about the stencils or if you have improvement suggestions, please contact me via Twitter, email or any other social media channel as I would love to hear your feedback. Stay tuned for the next updated version of my stencil set which will include more awesome icons and shapes.\n","cover":"/images/Azure_AI_stencils.png","date":"2017-10-10","lastmod":"2017-10-10","legacy":true,"markdown":"https://bisser.io/cognitive-services-and-bot-framework-visio-stencils/index.md","readingTime":2,"summary":"Cognitive Services and Bot Framework Visio Stencils","tags":["AI","Bot Framework"],"title":"Cognitive Services and Bot Framework Visio Stencils","uri":"/cognitive-services-and-bot-framework-visio-stencils/","url":"https://bisser.io/cognitive-services-and-bot-framework-visio-stencils/","wordCount":253},{"categories":["AI","Cognitive Services"],"content":"As the Microsoft Ignite is currently going on in Orlando, there are a lot of news and updates on all the various areas. The main focus areas which have been presented in the keynote are:\nModern workplace Business applications Applications \u0026amp;amp; infrastructure Data \u0026amp;amp; AI As you might already know I\u0026amp;rsquo;m into all things AI, which is why I want to share the most recent and important updates on the AI ecosystem (Cognitive Services, Bots \u0026amp;amp; ML) by Microsoft during the Ignite with you\u0026amp;hellip;\n25.09.2017#Service Updates# Text Analytics API is now generally available. Text Analytics is a cloud-based service that provides advanced natural language processing over raw text. It includes API functions such as sentiment analysis, key phrase extraction and language detection. Bing Custom Search API will be generally available in October. Bing Custom Search lets you create a highly-customized targeted web search experience to deliver more relevant results from your targeted web space through a commercial grade service. Bing Search APIs v7 will be will be generally available in October. Allowing you to bring the immense knowledge of the planet to your applications, the v7 update will provide several improvements, such as results coming back fast with improved performance for queries on the Bing Web Search API . New sorting and filtering options make it easier to find relevant results in news trending topics and image searches. Better error messages make it easy to troubleshoot and diagnose problem queries, and updated, modernized documentation make it easy bring the power of the Bing Search APIs to your applications. Changes to the Language Understanding Intelligent Service and Microsoft Bot Framework are planned, which contain everything you need to build and connect intelligent bots, generally available later this year. New Capabilities# QnAMaker preview API is now enabling to build, train and publish a simple question and answer bot from product manuals. Face API , Computer Vision API and Content Moderator are expanding in 7 additional regions - South Central US, West US2, East US, Brazil, North Europe, Australia East and East Asia. If you want to know more about these updates, take a look at MSIgnite AI Updates 25.09.2017 But that\u0026amp;rsquo;s not enough. Joseph Sirosh (Corporate Vice President for the Cloud AI group at Microsoft) also showed an important slide during his session \u0026amp;ldquo;The Microsoft AI platform\u0026amp;rdquo; which should give an overview of the AI platform within Azure:\n26.09.2017#Service Updates# Azure Machine Learning: Adding support for Azure Batch AI (Roadmap) Azure Machine Learning: Rolling out to more regions (Roadmap) Azure Machine Learning: Onward to GA (Roadmap) There have not been any announcements on service updates regardingCognitiveServices unfortunately. But what the Bot Framework is concerned, Vishwac Sena Kannan showed an interesting slide in his session Let\u0026amp;rsquo;s talk about Conversation Design about the growth and usage of this awesome framework which you can see below:\nNew Capabilities# Azure Machine Learning: 2 new services (Experimentation \u0026amp;amp; Model Management Service ) Azure Machine Learning: New Tools (Visual Studio Code Tools for AI \u0026amp;amp; Azure Machine Learning Workbench ) Azure Machine Learning: AI powered data wrangling Azure Machine Learning: Deploy models to the Edge (e.g.: IoT solutions) Azuer Machine Learning: Layered \u0026amp;amp; hierarchical model deployment possible SQL Server 2017: Support for R and Python 27.09.2017#Unfortunately, I have not spotted any roadmap updates for all of these services, but I would take this opportunity to list some really cool sessions you should watch on demand if you are not at Ignite like me:\nLanguage with Microsoft Cognitive Services: infusing language and speech capabilities into your apps Microsoft Cognitive Services - Infuse intelligence into your business app with Vision and Speech Let’s talk about Conversation Design Bot Framework patterns and practices …","cover":"/images/capture20170926081131373.png","date":"2017-09-26","lastmod":"2017-09-26","legacy":true,"markdown":"https://bisser.io/msignite-updates-on-ai-at-a-glance/index.md","readingTime":3,"summary":"MSIgnite updates on AI at a glance","tags":["AI","Bot Framework"],"title":"MSIgnite updates on AI at a glance","uri":"/msignite-updates-on-ai-at-a-glance/","url":"https://bisser.io/msignite-updates-on-ai-at-a-glance/","wordCount":638},{"categories":["AI","Cognitive Services"],"content":"Microsoft Cognitive Services are APIs and services which can be used to add intelligent services to applications for different purposes, whether this is a web, mobile or desktop app or a bot which should interact with humans in a more natural way. But as there is a wide range of Cognitive Services which can be used this post should expose and describe each of the APIs currently available. This should help get to know Microsoft\u0026amp;rsquo;s AI ecosystem a bit more. Additionally, the infographic I came up with should give an overview of the Cognitive Service world, which can be used to describe the individual services and APIs to help understand which service should be used in which area of application.\nMicrosoft Cognitive Services let you build apps with powerful algorithms to see, hear, speak, understand and interpret our needs using natural methods of communication, with just a few lines of code. Easily add intelligent features – such as emotion and sentiment detection, vision and speech recognition, language understanding, knowledge, and search – into your app, across devices and platforms such as iOS, Android, and Windows, keep improving and are easy to set up. Read more… Looking at the following infographic, the Cognitive Services can be grouped into six main areas, which are explained in detail below:\nVision Knowledge Speech Language Search Labs Cognitive-Services-Infographic-with-Description\nVision#With the different vision APIs, it is possible to gain insights from pictures or videos. The capabilities range from detecting faces in pictures up to automated image, text or video moderation as well as person recognition. As the infographic shows, there is even the possibility of building an own computer vision model for custom use cases, if the other services are not sufficient for the goal which should be achieved.\nKnowledge#Whether you want to build a QnA Bot with the QnA Maker API or you want to build an app which serves the users with recommendations based on past data, this category offers some nice services, which can be used to implement knowledge features into your apps. Additionally, what\u0026amp;rsquo;s quite cool is the Custom Decision Service which lets you build acontextual decision-making service which is self-learning with experience.\nSpeech#As speech is the new and modern way to interact with a service, the speech APIs give you the possibility of implementingspeech translation or speaker recognition features into your apps to make it more human. With the Bing Speech API, you can even convert text to speech and vice versa on the go to understand your users\u0026amp;rsquo; intent.\nLanguage#With the introduction of my Azure Bot \u0026amp;ldquo;Homie\u0026amp;rdquo; , I already showed you how to use one of the services in the language category: Language Understanding Intelligent Service (LUIS) in order to understand the intent of the user who interacts with my Bot. Furthermore, the other APIs can be used to detect the sentiment of a given text (like I did with Survey 365 ) ortranslate text into other languages.\nSearch#Search is one of the most important services for nearly every application or solution nowadays. In order to implement a search service, it is essential to provide the best possible results. Therefore the services and APIs in the search category are all offered by Bing and can be used to search the content of different types of news, entities, images or videos. In addition, the Bing Custom Search can be used to implement custom search routines to deliver the results you want your users to find.\nLabs#As the Cognitive Service APIs are rapidly growing the labs can be used to evaluate possible future APIs which are currently development by Microsoft. The current spectrum is ranging from gesture based controls to route logistics and location insights.\nConclusion#Microsoft Cognitive Services offer powerful and easy to use APIs for adding intelligence to various apps and solutions without the need to hosting the services on your own. The main …","cover":"/images/Cognitive-Services-Infographic-2-768x798.png","date":"2017-09-14","lastmod":"2017-09-14","legacy":true,"markdown":"https://bisser.io/cognitive-services-101-with-infographic/index.md","readingTime":4,"summary":"Cognitive Services - 101 (with Infographic)","tags":["AI","Bot Framework"],"title":"Cognitive Services - 101 (with Infographic)","uri":"/cognitive-services-101-with-infographic/","url":"https://bisser.io/cognitive-services-101-with-infographic/","wordCount":766},{"categories":["AI","Bot Framework"],"content":"Smart homes, smart vehicles, smart everything - nowadays all devices which we daily use have to be smart otherwise we wouldn\u0026amp;rsquo;t use them, would we? There are so many different approaches to make a device smart either you can control it remotely, speak to it or it even sets actions autonomously which should ease our lifes here and there. The key to achieve all this is nearly the same everywhere, no matter if you use smart devices and services provided by Google, Amazon or Microsoft. Behind all that is alwaysAI (Artifical Intelligence).\nAnd as I do a lot of research on Microsoft\u0026amp;rsquo;s AI stack (Cognitive Services, Bot Framework, Machine Learning, \u0026amp;hellip;) within Azure, I wanted to develop something intelligent, which could make my everyday life a bit easier. So I thought of a service, which could take actions whenever I tell it to do so. And this was the birth of \u0026amp;ldquo;Homie\u0026amp;rdquo;, who is my personal assistant for doing smart stuff. But now you most probably want to know who or what Homie is, right? Well, I\u0026amp;rsquo;ll try to explain you what and who he is within the next few paragraphs.\nThe Solution Design#Let\u0026amp;rsquo;s start. Imagine you are sitting in your office at home or at work and are really deepened in your work and you have to be concentrated in order to get your work done. And as time flies by, it gets dark outside. In the beginning you won\u0026amp;rsquo;t notice that it gets dark as you only star into your monitors and do your work. But after a few minutes, when it\u0026amp;rsquo;s really dark, you are sitting in a dark room and we all know, this doesn\u0026amp;rsquo;t work out very well for a longer time. But as you are a lazy person, like me, you don\u0026amp;rsquo;t want to stand up and go over to the light switch to turn the light on. But what if I told you that Homie could turn the light on for you and you can remain seated? All you need to do is to follow the following steps and get all services connected to each other like in the picture below and you can tell Homie what to do for you ;)\nThe design of the given solution as well as the flow of communication is shown above\nThe Bot and Cognitive Services Stuff#First of all we need to create an Azure Bot service, which is responsible for communicating with the user. So head over to the Azure portal and create a new bot. In my case I created a NodeJS LUIS bot, as there is already some LUIS related stuff preconfigured. Now when the bot is ready you need to add some intents to your LUIS app in order for the bot to actually be smart. So go to luis.ai and login (or register if you did not already) and add the following pre-defined intents:\nThese are the pre-defined LUIS intents used in this Cognitive Services app\nNow test and train your LUIS app and go back to your bot in the Azure portal, as we now will insert some magic. Now the following piece of code, let\u0026amp;rsquo;s your bot become smart as this code is responsible for doing actions based on the detected intent of a received messages.\nintents.matches(\u0026amp;#39;HomeAutomation.TurnOn\u0026amp;#39;,function(session, args){ session.sendTyping(); if(args.entities[0]) { var deviceEntity = builder.EntityRecognizer.findEntity(args.entities, \u0026amp;#39;HomeAutomation.Device\u0026amp;#39;); var roomEntity = builder.EntityRecognizer.findEntity(args.entities, \u0026amp;#39;HomeAutomation.Room\u0026amp;#39;); if (roomEntity){ session.send(\u0026amp;#34;Ok, I will turn the %s on in the %s\u0026amp;#34;, deviceEntity[\u0026amp;#39;entity\u0026amp;#39;], roomEntity[\u0026amp;#39;entity\u0026amp;#39;]); session.endDialog(); var commandJSON= { \u0026amp;#34;device\u0026amp;#34;: deviceEntity[\u0026amp;#39;entity\u0026amp;#39;], \u0026amp;#34;room\u0026amp;#34;: roomEntity[\u0026amp;#39;entity\u0026amp;#39;], \u0026amp;#34;action\u0026amp;#34;: \u0026amp;#34;Turn on\u0026amp;#34; }; request({ url: \u0026amp;#34;\u0026amp;lt;URL of your Azure Function\u0026amp;gt;\u0026amp;#34;, method: \u0026amp;#34;POST\u0026amp;#34;, json: true, // \u0026amp;lt;-- This is very important! body: commandJSON }, function (error, response, body){ console.log(response); }); } } }); The IoT Stuff#Now that your bot is ready to receive messages, we need to create an Azure IoT Hub which is used to send and receive messages from and to devices. So create one …","cover":"/images/homie_teams_communication-300x151.png","date":"2017-08-16","lastmod":"2017-08-16","legacy":true,"markdown":"https://bisser.io/homie-a-language-understanding-bot-for-smart-homes/index.md","readingTime":8,"summary":"Homie - A language understanding bot for smart homes","tags":["AI","Bot Framework"],"title":"Homie - A language understanding bot for smart homes","uri":"/homie-a-language-understanding-bot-for-smart-homes/","url":"https://bisser.io/homie-a-language-understanding-bot-for-smart-homes/","wordCount":1531},{"categories":["AI","Cognitive Services"],"content":"Microsoft Forms is one of the youngest services in the Office 365 ecosystem. Forms is a great service in my opinion as such a service was missing in the Microsoft repertoire. Now Office 365 users can create their Forms within seconds in order to create a survey or quiz and ask others about their opinion. And one of the most used survey topics in a company is the wellbeing of the employees. If the employees do not feel well, they won\u0026amp;rsquo;t achieve the necessary results, which would push the companies services forward. And we all know what happens if the employees of a company don\u0026amp;rsquo;t like what they\u0026amp;rsquo;re doing in their every day\u0026amp;rsquo;s work - either they quit soon or they quit later, but they\u0026amp;rsquo;ll for sure quit if nothing else happens. But the time, where they don\u0026amp;rsquo;t perform as expected is a crucial part, which needs be as low as possible.\nBut how does this belong to Microsoft\u0026amp;rsquo;s new Forms service? Well, I will tell you. How about if you could create a survey for your employees in order to get to know their opinion about their job position and their performance?\nHow about if your employees would really tell you what they feel (as we all know they won\u0026amp;rsquo;t, or at least 90% won\u0026amp;rsquo;t in a face to face discussion as they would fear the results)?\nMy pitch on this would be to create a survey for that which could be sent out to the employees on a regular basis in order to gain insights on their current situation.\nBut why would we use Forms for that? Well, that\u0026amp;rsquo;s an eligible question, but my answer would be: Why shouldn\u0026amp;rsquo;t we use a Microsoft, or even better an Office 365 service for that as we love this ecosystem? But there\u0026amp;rsquo;s an even better answer to this - Because we can use other great tools along with Forms which offer us whole new opportunities. And therefore I want to show you how you can create an intelligent survey based on Forms, Teams and of course AI in order to create a real intelligent survey, which uses Cognitive Services for sentiment detection of crucial answers and alerts the HR team via Microsoft Teams, if an employee gives a negative answer to a question. This makes it possible to filter out good and not so good feeling employees easily in order to set actions based on the answers real quick. This may lead to a very small delta, in which employees don\u0026amp;rsquo;t like what they\u0026amp;rsquo;re doing before they\u0026amp;rsquo;ll like it again.\nThe Solution Overview# Creating our first Form#First of all we\u0026amp;rsquo;ll create a new form by browsing to https://forms.office.com/Pages/DesignPage.aspx or launching the service via the O365 app launcher. Now let\u0026amp;rsquo;s choose \u0026amp;ldquo;New Form\u0026amp;rdquo; and start inserting your questions. My Form for this scenario looks like the following, although I have to admit that there are certainly better formulated questions for asking employees how they feel, but I\u0026amp;rsquo;m not a specialist in that field ;)\nThe Glue for our Services - Microsoft Flow#Now when we are finished with our Form, we\u0026amp;rsquo;ll create a new Flow (but you can also create a new Azure Logic App btw) and search for the \u0026amp;ldquo;Forms\u0026amp;rdquo; connector and select the trigger \u0026amp;ldquo;Microsoft Forms - When a new response is submitted\u0026amp;rdquo;:\nAs everything in the cloud is connected, we can just select our Form, which we created earlier:\nNow we need to add a new action which will be the sentiment detection powered by the Azure Text Analytics API. The text which i will check is the answer to the question \u0026amp;ldquo;How do you feel at work?\u0026amp;rdquo; but as you might guess we could check more than one as well in order to get better and more precise results.\nIn order to alert the Teams channel if a negative answer was submitted, we need to insert an action which is called \u0026amp;ldquo;Condition\u0026amp;rdquo; and we will enter the following condition settings in order to be able to alert the Team only if the sentiment score of the given answer is less than 0,5 (you can also adapt that value):\nAnd now we have the ability to …","cover":"/images/survey365_01.png","date":"2017-07-17","lastmod":"2017-07-17","legacy":true,"markdown":"https://bisser.io/survey-365-an-intelligent-survey-solution/index.md","readingTime":5,"summary":"Survey 365 - An intelligent survey solution","tags":[],"title":"Survey 365 - An intelligent survey solution","uri":"/survey-365-an-intelligent-survey-solution/","url":"https://bisser.io/survey-365-an-intelligent-survey-solution/","wordCount":1035},{"categories":["Azure"],"content":"Many of my customers, where I had the chance to do a workshop about Azure or Office 365 asked me the same question every single time: \u0026amp;ldquo;How do you keep track with the updates on the roadmap?\u0026amp;rdquo; I have to admit, the question is eligible due to the fact, that there is an update on the roadmap for both products nearly every day. So as a good consultant, you would need to spend all of your time studying the roadmaps to be on track and give your customers the newest information and advices in order to sell the best services and solutions. Well, I guess we all know, that this can\u0026amp;rsquo;t be done, except for people who don\u0026amp;rsquo;t sleep. So i thought about a better way of how to keep track with the updates on the different roadmaps. Looking at the following 2 pages, where the roadmaps of Office 365 and Azure are displayed, I soon detected something on the Azure roadmap page, which I could use - RSS feeds. So take a look at the roadmaps if you like:\nhttps://azure.microsoft.com/en-us/roadmap/ https://products.office.com/en-us/business/office-365-roadmap So I thought of a solution which should give me the possibility to stay on track, no matter where I am and which device I am using. That\u0026amp;rsquo;s an ideal use case for Microsoft Teams. So basically what I have done is to built a Flow, which should be triggered if a RSS feed item is published and afterwards send the feed item summary to my Teams channel for later reading. So let\u0026amp;rsquo;s head over to Flow and create a new one with the following trigger settings:\nThe RSS feed URL is the Azure roadmap URL followed by \u0026amp;ldquo;/feed\u0026amp;rdquo; (this can be found on the roadmap page as well). So paste it in there:\nNow we only need to add an action which should post a message to my Teams channel, like this:\nAnd if you saved it, you will soon see some new messages in your channel, which inform you about the latest Azure roadmap updates:\nUnfortunately, I did not find anything similar for Office 365 as well, as there is no official RSS feed for this roadmap. But I\u0026amp;rsquo;m pretty sure, they will add this to the O365 roadmap as well. So if this is there, I will update you on how to combine both of them with Teams in order to built up a roadmap update service…\n","cover":"/images/roadmap04.png","date":"2017-07-11","lastmod":"2017-07-11","legacy":true,"markdown":"https://bisser.io/how-to-keep-up-with-the-azure-roadmap/index.md","readingTime":2,"summary":"How to keep up with the Azure roadmap","tags":[],"title":"How to keep up with the Azure roadmap","uri":"/how-to-keep-up-with-the-azure-roadmap/","url":"https://bisser.io/how-to-keep-up-with-the-azure-roadmap/","wordCount":402},{"categories":["AI","Cognitive Services"],"content":"The last days I was doing a lot of researches on AI and Cogntive Services as this topic is a major topic for the future in the daily use. So I read a couple of blog posts about this and got an idea on how to use it. And today I want to show you a small prototype application which I created in order to combine the Azure Cognitive Service API with my most used tool for work, which is Outlook and packed it into an Azure Logic App as I am not a developer (as you might know by now) in order to save development effort. The basic idea was to create a solution which checks my received mails and detects the sentiment of the mail body in order to see if the sentiment score is high or low of the received mail. Therefore I created a logic app which is consisting of the following actions:\nThe Azure Logic App triggers each time a new mail arrives in my inbox, sends the body to the Text Analytics Service of the Cognitive Service API and the result which is basically the sentiment score of the mail will be inserted into a Power BI dataset in order to build a nice dashboard. But let\u0026amp;rsquo;s start from the beginning and create the Logic App. So head over to your Azure portal and create a new Logic App:\nWhen the app is deployed you can head over to the Logic App Designer and start to insert the first action which is the Outlook action \u0026amp;ldquo;When a new email arrives\u0026amp;rdquo;. So if you open up the Designer you will be presented with a couple of templates. But we will go with the blank one:\nNext we will search for our trigger in the Office 365 Outlook service and click on \u0026amp;ldquo;When a new email arrives\u0026amp;rdquo;:\nNow the Designer is prompting us to sign into your Office 365 mailbox so we will do that:\nIf you have SSO enabled, you won\u0026amp;rsquo;t need to enter your credentials here. When you signed in you can choose your mailbox folder which should be checked. I will go for the Inbox in my case but you can choose whatever folder you want. You can also adapt the frequency the trigger should be fired. My settings are look like this:\nNow we will add a new step which is the detection of the sentiment of the mail body. But before we can do this we need to create the Text Analytics service first. So save your app and click on the \u0026amp;ldquo;+\u0026amp;rdquo; symbol in your navigation pane of the Azure portal and search for \u0026amp;ldquo;Cognitive Services\u0026amp;rdquo; then click create. Now choose the following settings and change the Name, subscription and pricing tier to fit your needs (I have chosen the S1 priecing tier but you are good to go with the free one which is F0 as well!):\nNow that this is created you can go to that service and get the necessary key:\nNow we can go back to our Logic App and go to the designer to add a new action. To do this click \u0026amp;ldquo;+ Next step\u0026amp;rdquo; - \u0026amp;ldquo;Add an action\u0026amp;rdquo;:\nNow we want to search for the connector \u0026amp;ldquo;Text analytics\u0026amp;rdquo; and choose the action of \u0026amp;ldquo;Detect sentiment\u0026amp;rdquo;. Now it asks us for a name and a key:\nSo we enter the name of the Text Analytics service we created earlier and the key. Now we need to enter the text which should be analysed, so we choose the Body of the email which we will receive:\nSo now we need to configure Power BI in order to receive the necessary information for our dashboard. So go to https://app.powerbi.com and create a new streaming data set in your workspace as follows:\nChoose API as the source of your data:\nGive it a name and insert values for the incoming data:\nAs we want to show the sender\u0026amp;rsquo;s email address and the sentimentscore on our dashboard we need these two values. Additionally we will add the subject as a value. It is very important to enable \u0026amp;ldquo;Historic data analysis\u0026amp;rdquo; in order to show the values in the dashboard. When you\u0026amp;rsquo;re ready click create. Now we can go back to our Logic App Designer and add another action. This time we will add the \u0026amp;ldquo;Power BI - Add rows to a dataset\u0026amp;rdquo; action. Now we need to sign into our Power BI profile:\nAfter we have signed in …","cover":"/images/capture20170629123812730.png","date":"2017-06-29","lastmod":"2017-06-29","legacy":true,"markdown":"https://bisser.io/detect-the-sentiment-of-your-received-emails/index.md","readingTime":5,"summary":"Detect the sentiment of your received emails","tags":[],"title":"Detect the sentiment of your received emails","uri":"/detect-the-sentiment-of-your-received-emails/","url":"https://bisser.io/detect-the-sentiment-of-your-received-emails/","wordCount":950},{"categories":[],"content":"Many of you guys will probably know the ADFS page, which can be used to test the authentication. Most of the time this page is used after the installation of an ADFS farm or in error cases. With the introduction of ADFS on Windows Server 2016, many of us may have encountered the problem, which is shown in the following screenshot when browsing to the URL https://adfs.corp.com/adfs/ls/idpinitiatedsignon after the successful installation of a new ADFS farm:\nOoops something went wrong. But is my ADFS farm installation missing a piece? Well, kind of! If you encounter this, then run the following PS command:\nGet-AdfsProperties | select EnableIdPInitiatedSignonPage Most probably you will see this result:\nSo the problem is that this page is disabled by default. So let\u0026amp;rsquo;s change this by running the following command:\nSet-AdfsProperties -EnableIdPInitiatedSignonPage $true Now you can browse to your InitiatedSignon page and you will be able to login and check if everything is working as expected! Happy ADFSing ;)\n","cover":"","date":"2017-06-28","lastmod":"2017-06-28","legacy":true,"markdown":"https://bisser.io/archive/019-adfs-2016-idpinitiatedsignon-page-is-missing---solved/index.md","readingTime":1,"summary":"","tags":[],"title":"ADFS 2016 idpinitiatedsignon page is missing - Solved","uri":"/archive/019-adfs-2016-idpinitiatedsignon-page-is-missing---solved/","url":"https://bisser.io/archive/019-adfs-2016-idpinitiatedsignon-page-is-missing---solved/","wordCount":162},{"categories":[],"content":"With the GA announcement of Microsoft Stream yesterday, I thought of using it in a very cool and modern way. My idea was to create an interactive video platform within my Teams service. So let\u0026amp;rsquo;s hit it and configure Stream and Teams in a way to watch Stream videos within your Teams client and build up a modern video streaming platform.\nFirst of all you need to create a new Stream channel. So I went over to my Stream app in the app launcher of my O365 tenant an created a new channel there, like the following:\nYou can enter whatever you like. When you\u0026amp;rsquo;re done hit create and wait for the channel to be created. After that you can start uploading your favourite videos. I chose some Azure Friday episodes as these are quite interesting for me.\nSo when you\u0026amp;rsquo;re done uploading videos you can go over to your Teams client. I created a new channel in my team which should be used for the videos. After that I added a new tab in that channel and select the Stream service:\nSo you will need to enter a name for that tab and the URL of your stream channel:\nWhen you save that, you will see all of your uploaded videos from the Stream channel:\nNow you are done configuring the client and you can grab your popcorn bag and start watching videos within your Teams client, isn\u0026amp;rsquo;t that a cool thing?\nHappy watching! ;)\n","cover":"","date":"2017-06-21","lastmod":"2017-06-21","legacy":true,"markdown":"https://bisser.io/archive/018-microsoft-teams--microsoft-stream/index.md","readingTime":2,"summary":"","tags":[],"title":"Microsoft Teams ♥ Microsoft Stream","uri":"/archive/018-microsoft-teams--microsoft-stream/","url":"https://bisser.io/archive/018-microsoft-teams--microsoft-stream/","wordCount":246},{"categories":[],"content":"Today I want to bring some light into the darkness and write down, what\u0026amp;rsquo;s not written down as per today. I guess most of you know the MyApps portal, which is also feeding the Office 365 app launcher with enterprise applications. You can browse to that app panel directly via https://myapps.microsoft.com and it is a very useful service, which should be used in every cloud environment as it provides SSO to apps without the need of remembering credentials for those apps like the corporate Twitter acocount or the corporate Amazon account. And the cool thing about this is that there is also a mobile app available on iOS and Android. But there seems to be hidden information, which is very important in my opinion, but is nowhere documented.\nWe wanted to play around with the MyApps portal and added some applications through the Azure AD and did some testing on group based assignements to those apps, which perfectly worked fine in the browser. But there was this annoying problem, that all of this was not working on our iPhones and Androids via the MyApps mobile app. So i digged deeper into the Azure AD portal to see if there is some setting missing - nothing. I digged deeper on the ADFS if there might be some setting missing - no success. At that point we only used 1 ADFS server and no WAP.\nAt the same time we deployed a test/dev environment which was kind of similar to our productive environment. As I did the same tests with the MyApps app there it worked out perfectly fine on my iPhone. So I thought of the differences between those two environments - and there was only one thing different: in the test environment we had a WAP in place for handling external authentication requests to the ADFS.\nSo I decided to deploy a WAP in our production environment as well - et voila - suddenly the MyApps mobile app worked like charm here as well. So concluding this, it seems that the MyApps mobile app needs a WAP in place in order to successfully authenticating against the ADFS service. If this was documented somewhere, I could have saved some time worrying about this annoying problem, but I hope that this helps some of you out there overcome this issue…\n","cover":"","date":"2017-06-19","lastmod":"2017-06-19","legacy":true,"markdown":"https://bisser.io/archive/017-solving-the-problem-of-the-myapps-mobile-app-on-ios--android-not-authenticating-successfully/index.md","readingTime":2,"summary":"","tags":[],"title":"Solving the problem of the MyApps mobile app on iOS \u0026 Android not authenticating successfully","uri":"/archive/017-solving-the-problem-of-the-myapps-mobile-app-on-ios--android-not-authenticating-successfully/","url":"https://bisser.io/archive/017-solving-the-problem-of-the-myapps-mobile-app-on-ios--android-not-authenticating-successfully/","wordCount":388},{"categories":[],"content":"A couple of days ago I wanted to tidy up my Azure subscription and move the unneeded resources from my active subscription to my team\u0026amp;rsquo;s subscription. At first I wanted to move a storage account, which I created a couple of years ago - needless to say that this was of type classic resource. The Azure portal now introduced a quite handy operation which can be used for many resources in order to move the resource either to another resource group or even to another subscription. Yeah I know what you think right now - AWESOME.\nSo as I hit the \u0026amp;ldquo;Move\u0026amp;rdquo; button in the Azure portal in order to move the account to another subscription I got the following error:\nAnd there it was - the problem of classic resource type migrations. So I searched a bit and had the idea of doing all needed operations within the Azure Cloud Shell. So let\u0026amp;rsquo;s start off by opening the shell and registering a migration resource provider and set up the preparations for the migration of the storage account.\nazure provider register Microsoft.ClassicInfrastructureMigrate azure provider show Microsoft.ClassicInfrastructureMigrate azure config mode arm azure storage account prepare-migration \u0026amp;lt;storageAccountName\u0026amp;gt; After runnning the last command you should see something like this in the Azure Cloud Shell:\nSo now let\u0026amp;rsquo;s do the migration by entering the following command which should lead to the following output:\nazure storage account commit-migration \u0026amp;lt;storageAccountName\u0026amp;gt; So we have migrated the storage account from type classic to resource manager type. And now we are good to go to move the storage account to another subscription. And as we already have our shell session open let\u0026amp;rsquo;s do this via the cloud shell as well. Just enter the following command and make a note of the ID:\naz resource show -g \u0026amp;lt;resourceGroupName\u0026amp;gt; -n \u0026amp;lt;storageAccountName\u0026amp;gt; --resource-type \u0026amp;#34;Microsoft.Storage/storageAccounts\u0026amp;#34; --query id And now finally we can move the resource to the destination subscription with the following command:\naz resource move --destination-group \u0026amp;lt;resourceGroupName\u0026amp;gt; --ids \u0026amp;lt;resourceID\u0026amp;gt; --destination-subscription-id \u0026amp;lt;destinationSubscriptionID\u0026amp;gt; This command will take a while to complete, but if you watch the destination resource group you will likely see the following message \u0026amp;ldquo;Moving resources\u0026amp;rdquo; as the following illustration shows:\nAnd when the command is completed successfully you have moved your storage account. Of course you are not limited to storage accounts only, but you can move almost any service in the ARM world between resource groups or subscription. If you want to know how to move another resource type, just give me short notice below or on Twitter and I will follow up on that! Cheers…\n","cover":"","date":"2017-06-08","lastmod":"2017-06-08","legacy":true,"markdown":"https://bisser.io/archive/016-move-azure-resource-to-another-subscription-with-the-azure-cloud-shell/index.md","readingTime":2,"summary":"","tags":[],"title":"Move Azure resource to another subscription with the Azure Cloud Shell","uri":"/archive/016-move-azure-resource-to-another-subscription-with-the-azure-cloud-shell/","url":"https://bisser.io/archive/016-move-azure-resource-to-another-subscription-with-the-azure-cloud-shell/","wordCount":426},{"categories":[],"content":"As I played around with Microsoft Flow and Teams I had the idea of creating a channel with news on Office 365. So I created a Teams channel and started creating a Flow, which was pretty easy. And as I was finished and I started the flow, the Teams channel which should show me tweets with the hashtag #Office365, soon was overfilled with tweets about Office 365 in all kinds of languages. So I thought of creating a Flow, which should filter out all other languages than English, as most useful tweets are posted in English (but as you might guess you can adapt my solution and use any language, which supported by Azure Cognitive Services). Therefore, I created a new Azure Cognitive Service in my Azure Subscription as the following graphic shows.\nNow you need to note your Cognitive Service name and key from the Azure Portal and head over to the Flow portal, where you create a new Flow as follows.\nAnd this is basically it. Now hit Done and you are ready to look your Teams Channel. I tested it myself and i I have to admit although it\u0026amp;rsquo;s still in preview (the language detection) it works pretty good, take a look:\nI will further play around with these services in order to deliver an even better solution and I will try to combine new services soon, so stay tuned for updates…\n","cover":"","date":"2017-05-29","lastmod":"2017-05-29","legacy":true,"markdown":"https://bisser.io/archive/015-how-to-create-an-office365-alert-in-microsoft-teams-in-less-than-10-minutes/index.md","readingTime":2,"summary":"","tags":[],"title":"How to create an Office365 alert in Microsoft Teams in less than 10 minutes","uri":"/archive/015-how-to-create-an-office365-alert-in-microsoft-teams-in-less-than-10-minutes/","url":"https://bisser.io/archive/015-how-to-create-an-office365-alert-in-microsoft-teams-in-less-than-10-minutes/","wordCount":235},{"categories":[],"content":"In the last post I tried to show how to make PowerShell life easier. You can read it here This post is picking up the same issue, but the tool is a bit different. All cloud admins may know that Visual Studio Code supports PowerShell scripts and in addition to that makes life easier by having a source control for those scripts via GitHub oder TFS. But still you may encounter the problem, that you have to login to every cloud service seperately in every VSCode session, which can be annoying. But as VSCode supports PowerShell you can apply the same set of functions mentioned in my previous post in VSCode as well.\nAll you have to do is open up VSCode create a new PSScript and run the following code:\nTest-Path $Profile If you receive a False, then you can set up your profile with the following commands:\nNotepad $Profile Now this opens up a blank profile, which needs to adapted in order to implement functions, which allow you to login to all cloud services, like we did in the PS DIE. Therefore, you can paste the following code:\nImport-Module MSOnline function Connect-Tenant1 { [Cmdletbinding()] param ( [Microsoft.PowerShell.EditorServices.Extensions.EditorContext]$context ) $CloudUsername = \u0026amp;#34;admin@tenant1.onmicrosoft.com\u0026amp;#34; $File = \u0026amp;#34;C:\\Users\\adm.sbi\\Documents\\Tools\\PowerShell\\tenant1_pw.txt\u0026amp;#34; $CloudCred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $CloudUsername, (Get-Content $File | ConvertTo-SecureString) #Connect to Office 365 Connect-MsolService -Credential $CloudCred #EXO $SessionEX = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $CloudCred -Authentication Basic -AllowRedirection Import-PSSession $SessionEX Add-AzureAccount -Credential $CloudCred Select-AzureSubscription -SubscriptionName \u0026amp;#34;AzureSubscription\u0026amp;#34; Login-AzureRmAccount -Credential $CloudCred Import-Module \u0026amp;#34;C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.PowerShell.dll\u0026amp;#34; Connect-SPOService -Url https://tenant1-admin.sharepoint.com -credential $CloudCred Clear-Host } Now hit save and restart VSCode. Now if you start typing connect-ten you will get the suggestions Connect-Tenant1, which is pretty cool, isn\u0026amp;rsquo;t it?\nAnd this is it, now you\u0026amp;rsquo;re good to go with your new PS environment. If you have further questions, you can of course contact my via Twitter, mail or other services…\n","cover":"","date":"2017-05-24","lastmod":"2017-05-24","legacy":true,"markdown":"https://bisser.io/archive/014-a-guide-on-simplifications-for-o365-admins---iii---visual-studio-code-profiles/index.md","readingTime":2,"summary":"","tags":[],"title":"A guide on simplifications for O365 admins - III - Visual Studio Code profiles","uri":"/archive/014-a-guide-on-simplifications-for-o365-admins---iii---visual-studio-code-profiles/","url":"https://bisser.io/archive/014-a-guide-on-simplifications-for-o365-admins---iii---visual-studio-code-profiles/","wordCount":314},{"categories":[],"content":"In my previous post, which you can read here I showed you how you can simplify your life as an O365 admin, with Chrome profiles. With this post, I want to show you, how you can tune your PowerShell in order to establish PS profiles too, which can be used to automate common tasks, like login and connect to cloud services like Exchange Online, Office 365 or Azure.\nTherefore, if you haven\u0026amp;rsquo;t created a PS profile already, just run the following command in the PowerShell or, what I personally prefer, in the PS ISE.\nTest-Path $Profile If you receive a \u0026amp;ldquo;False\u0026amp;rdquo;, you do not have a profile already, so let\u0026amp;rsquo;s create one with the following command and then open it in the notepad:\nNew-Item –Path $Profile –Type File –Force Notepad $Profile So now that you own a PS or ISE profile, you can do some nice stuff with it. And as an O365 admin, you probably love to do admin tasks with your PS instead with the GUI. But isn\u0026amp;rsquo;t it annoying to login in everytime you open up your PS or ISE or even worse, login with different credentials, when you need to administer a customers tenant? That\u0026amp;rsquo;s why I implemented my own login process in my ISE in order to define quick actions, which do the authentication process automatically with a few clicks. Simply paste the following code to your profile and replace with your credentials.\n$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add( \u0026amp;#34;Tenant1\u0026amp;#34;, { $CloudUsername = \u0026amp;#39;admin@tenant1.onmicrosoft.com\u0026amp;#39; $CloudPassword = ConvertTo-SecureString \u0026amp;#39;Pa$w0rd\u0026amp;#39; -AsPlainText -Force Clear-Host $CloudCreds = New-Object System.Management.Automation.PSCredential $CloudUsername, $CloudPassword Connect-MsolService -Credential $CloudCreds $SessionEX = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $CloudCreds -Authentication Basic -AllowRedirection Import-PSSession $SessionEX Add-AzureAccount -Credential $CloudCreds Select-AzureSubscription -SubscriptionName \u0026amp;#34;AzureSubscription\u0026amp;#34; Login-AzureRmAccount -Credential $CloudCreds Import-Module \u0026amp;#34;C:\\Program Files\\SharePoint Online Management Shell\\Microsoft.Online.SharePoint.PowerShell\\Microsoft.Online.SharePoint.PowerShell.dll\u0026amp;#34; Connect-SPOService -Url https://tenant1-admin.sharepoint.com -credential $CloudCreds Clear-Host }, \u0026amp;#34;Control+Alt+1\u0026amp;#34; ) Now if you re-open up your ISE (if you have followed the previous steps in your ISE) you should see the following Add-Ons options:\nSo now you are good to go and click on your Tenant and start using your PS profile. And as you might guess you can paste more of these Add-Ons into your profile in order to add more tenants. But what\u0026amp;rsquo;s not that ideal is that the password is inserted in plain text. Therefore you can follow the following routine in order to use encrypted passwords for your PS profiles.\nAt first, run the following command in your PS in order to create an encrypted password and save it to your disk (you may adapt the path):\n(Get-Credential).Password | ConvertFrom-SecureString | Out-File \u0026amp;#34;C:\\Users\\adm.sbi\\Documents\\Tools\\PowerShell\\tenant1_pw.txt\u0026amp;#34; Now that you have that in place, you need to adapt your profile in order to read the file, with the encrypted password and create your credential object with that password:\n$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add( \u0026amp;#34;Tenant1\u0026amp;#34;, { $CloudUsername = \u0026amp;#39;admin@tenant1.onmicrosoft.com\u0026amp;#39; $File = \u0026amp;#34;C:\\Users\\adm.sbi\\Documents\\Tools\\PowerShell\\tenant1_pw.txt\u0026amp;#34; $CloudCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $CloudUsername, (Get-Content $File | ConvertTo-SecureString) Connect-MsolService -Credential $CloudCreds $SessionEX = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $CloudCreds -Authentication Basic -AllowRedirection Import-PSSession $SessionEX Add-AzureAccount -Credential $CloudCreds …","cover":"","date":"2017-05-16","lastmod":"2017-05-16","legacy":true,"markdown":"https://bisser.io/archive/013-a-guide-on-simplifications-for-o365-admins---ii---powershell-profiles/index.md","readingTime":3,"summary":"","tags":[],"title":"A guide on simplifications for O365 admins - II - PowerShell profiles","uri":"/archive/013-a-guide-on-simplifications-for-o365-admins---ii---powershell-profiles/","url":"https://bisser.io/archive/013-a-guide-on-simplifications-for-o365-admins---ii---powershell-profiles/","wordCount":543},{"categories":[],"content":"At the Microsoft Build 2017 there were a lot of new features announced. One, which was quite innovative was the release of the Azure Mobile Portal. With this app it\u0026amp;rsquo;s now possible to manage your Azure resources (and I mean all your Azure resources) from your smartphone or tablet via an app. So here are my first tests with the new mobile portal app.\nSo after starting the app and selecting your subscription, you can browse all your Azure resources, which have been created in that subscription and click on each of them to get the details:\nYou can also filter the resources by category, for example by virtual machines:\nSo now let\u0026amp;rsquo;s browse into a VM\u0026amp;rsquo;s details and see what we can do:\nAnd this is pretty cool, because at the bottom you can start and stop the VM, but you can even connect to it via RDP, so let\u0026amp;rsquo;s do this.\nWhen it\u0026amp;rsquo;s started, we\u0026amp;rsquo;ll connect to it:\nEt voila, the app store opens in order to download the Microsoft RDP app:\nAnd after downloading the app, you can RDP into your Azure VMs from the Azure mobile portal app straight away - pretty awesome!\nBut wait, there is an important note about stopping the VM via the mobile portal app. If you click on stop, the VM gets only stopped, but not deallocated, which means, that you still get charged for the VM:\nSo be careful, when managing your VMs from the mobile portal app. For the moment you need to stop it via the Azure portal, in order to avoid unnecessary charges guys…\nStay tuned for more helpful information about the Azure mobile portal, because there is more to come, look here:\n","cover":"","date":"2017-05-11","lastmod":"2017-05-11","legacy":true,"markdown":"https://bisser.io/archive/000-azure-mobile-portal---a-sneak-peak/index.md","readingTime":2,"summary":"","tags":[],"title":"Azure mobile portal - a sneak peak","uri":"/archive/000-azure-mobile-portal---a-sneak-peak/","url":"https://bisser.io/archive/000-azure-mobile-portal---a-sneak-peak/","wordCount":286},{"categories":[],"content":"This was one of my most awaited features, which should be unveiled at the Build2017 - the Azure Cloud Shell. And now, only a couple of hours later, it\u0026amp;rsquo;s already here and can be used do to cool stuff within the Azure portal in your favourite internet browser. To start it, simply click on the PowerShell-like icon on the upper right corner and you\u0026amp;rsquo;ll see the following:\nNow, you only need to select your subscription, where the according storage account and file share will be created. This enables you to persist your $Home directory in order to use it session-independently, which is pretty cool. This let\u0026amp;rsquo;s you work with the same environment everywhere and everytime - the only thing you need from now on is a browser and nothing else. After you have selected it, you have to wat for the initialization to be finished and…\n… now you can run your commands from the Azure CLI and Linux based commands in your Azure Cloud Shell, like listing your VMs:\nFor a full list of Azure CLI commands, you can take a look at https://docs.microsoft.com/en-us/cli/azure/ . But what\u0026amp;rsquo;s even cooler is this - Create a resource group:\nAnd create your first VM within the Azure Cloud Shell:\nBut that\u0026amp;rsquo;s not all, because you can even connect to that VM via SSH within the same Shell:\nSo this is just awesome, as you do not need any local resources other than a browser in the future. And what\u0026amp;rsquo;s even cooler is that PowerShell support in the Azure Cloud Shell is coming too:\nSo stay tuned for more to come, as I will keep you up to date on any new features in the Cloud Shell and I will also give you some ideas, which cool and helpful things can be done with this awesome tool…\n","cover":"","date":"2017-05-10","lastmod":"2017-05-10","legacy":true,"markdown":"https://bisser.io/archive/012-azure-cloud-shell-released---first-thoughts-and-previews/index.md","readingTime":2,"summary":"","tags":[],"title":"Azure Cloud Shell released - first thoughts and previews","uri":"/archive/012-azure-cloud-shell-released---first-thoughts-and-previews/","url":"https://bisser.io/archive/012-azure-cloud-shell-released---first-thoughts-and-previews/","wordCount":304},{"categories":[],"content":"In my career as an O365 consultant, I always had the challenge of login successfully to the different O365 tenants from our customers. As we have quite many O365 customers by now it\u0026amp;rsquo;s not that easy to remember all the passwords (but therefore we have a password management solution) but also to open a new private browsing session for the customer in order to login and don\u0026amp;rsquo;t get redirected to our ADFS, where I get authenticated via SSO. And that could be a real nightmare, when you try to open up your favourite browser and try to access the O365 portal with different credentials than your primary work account. The only escape for this problem is to open a private or incognito session and type in username and password everytime. But not anymore!\nLuckily a colleague of mine told me a trick on how to overcome this issue. The answer to the problem is custom Chrome profiles.\nThis is not a big deal to establish. The only thing you need to do is to click on your Google account in the upper right corner of your Chrome window.\nAfter that you have the option to manage people, which allows you to add a person.\nNow you only need to enter a name for that person, set your starting pages (like https://portal.office.com and https://portal.azure.com ) and login to that pages, save your credentials and click \u0026amp;ldquo;keep me signed in\u0026amp;rdquo;.\nNow, when you start your machine the next time and, you can simply click on the chrome profile, which you want to use and voila, your credentials are saved and you don\u0026amp;rsquo;t need to copy/paste username and password anymore.\nSo that was the first part of a series on simplifactions for O365 admins, stay tuned for the next guide!\n","cover":"","date":"2017-05-02","lastmod":"2017-05-02","legacy":true,"markdown":"https://bisser.io/archive/011-a-guide-on-simplifications-for-o365-admins---part-i---chrome-profiles/index.md","readingTime":2,"summary":"","tags":[],"title":"A guide on simplifications for O365 admins - part I - Chrome profiles","uri":"/archive/011-a-guide-on-simplifications-for-o365-admins---part-i---chrome-profiles/","url":"https://bisser.io/archive/011-a-guide-on-simplifications-for-o365-admins---part-i---chrome-profiles/","wordCount":297},{"categories":[],"content":"As a consultant, working in a team of 6 people, task management is a crucial part in my daily business. In my team, it is very important to have a good task management, in order to decide about who does the workshop for a customer next week, or who can do the conception phase during the next few weeks. For this reason we decided to use Visual Studio Online (VSO) in order to manage our work items and keep an eye on the team members\u0026amp;rsquo; workloads, although we\u0026amp;rsquo;re no developers or engineers, who need to manage code. But the point is that there is one major part missing, when managing a team\u0026amp;rsquo;s tasks in VSO - the Outlook integration. Because personal tasks are something, which are managed in Outlook, to organise the daily work based on the calendar and the open tasks. But the missing point is that there is no native integration of VSO tasks and work items with Outlook. So many people I know overcome this issue by creating a task in Outlook everytime they get a new work item assigned in VSO. But this is too time consuming in my opinion.\nTherefore, I decided to search for an alternative and tried some the 3rd party addins for Outlook, which are designed to intergrate VSO in the Outlook client. But I have not found an addin, which is performant and which also makes my VSO tasks available on my mobile device. And with the releas to Microsoft\u0026amp;rsquo;s To-Do, I decided to do it on my own and create my VSO to Outlook task sync engine. And this was quite easy (and as I\u0026amp;rsquo;m not a developer you can do it too, im sure). My goal was that I didn\u0026amp;rsquo;t want to setup any local resources or servers, but to keep it as simple as possible. So I decided on the following design:\nSo how to achieve this? First of all, we need to create an Azure Function app, with the following properties:\nAfter the function is created, navigate to the function app page and create a new function and get the function URL:\nThen we\u0026amp;rsquo;re ready to insert the following code, which basically does all our work:\n#r \u0026amp;#34;Newtonsoft.Json\u0026amp;#34; #r \u0026amp;#34;Microsoft.Exchange.WebServices.dll\u0026amp;#34; using System; using System.Net; using Newtonsoft.Json; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using Microsoft.Exchange.WebServices.Data; public static async Task\u0026amp;lt;object\u0026amp;gt; Run(HttpRequestMessage req, TraceWriter log) { log.Info($\u0026amp;#34;Webhook was triggered!\u0026amp;#34;); string jsonContent = await req.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject(jsonContent); HttpContent requestContent = req.Content; string resource = jsonContent.Substring(jsonContent.IndexOf(\u0026amp;#34;resource\u0026amp;#34;)); log.Info(\u0026amp;#34;Item info: \u0026amp;#34; + resource); var assignedTo = (object)data[\u0026amp;#34;resource\u0026amp;#34;][\u0026amp;#34;fields\u0026amp;#34;][\u0026amp;#34;System.AssignedTo\u0026amp;#34;][\u0026amp;#34;newValue\u0026amp;#34;]; var title = (object)data[\u0026amp;#34;resource\u0026amp;#34;][\u0026amp;#34;revision\u0026amp;#34;][\u0026amp;#34;fields\u0026amp;#34;][\u0026amp;#34;System.Title\u0026amp;#34;]; var description = (object)data[\u0026amp;#34;resource\u0026amp;#34;][\u0026amp;#34;revision\u0026amp;#34;][\u0026amp;#34;fields\u0026amp;#34;][\u0026amp;#34;System.Description\u0026amp;#34;]; var iteration = (object)data[\u0026amp;#34;resource\u0026amp;#34;][\u0026amp;#34;revision\u0026amp;#34;][\u0026amp;#34;fields\u0026amp;#34;][\u0026amp;#34;System.IterationPath\u0026amp;#34;]; var id = (object)data[\u0026amp;#34;resource\u0026amp;#34;][\u0026amp;#34;workItemId\u0026amp;#34;]; string assigned = JsonConvert.SerializeObject(assignedTo); string bliTitle = JsonConvert.SerializeObject(title); string bliDescription = JsonConvert.SerializeObject(description); string bliIteration = JsonConvert.SerializeObject(iteration); string itemID = JsonConvert.SerializeObject(id); string itemUrl = \u0026amp;#34;https://solvion.visualstudio.com/DefaultCollection/ICS/_workitems/edit/\u0026amp;#34;+itemID.ToString(); bliIteration = bliIteration.Replace(\u0026amp;#34;\\\u0026amp;#34;\u0026amp;#34;, \u0026amp;#34;\u0026amp;#34;); bliTitle = bliTitle.Replace(\u0026amp;#34;\\\u0026amp;#34;\u0026amp;#34;, \u0026amp;#34;\u0026amp;#34;); bliDescription = bliDescription.Replace(\u0026amp;#34;\\\u0026amp;#34;\u0026amp;#34;, \u0026amp;#34;\u0026amp;#34;); string assignedNew = assigned.ToString(); string ite = bliIteration.ToString(); //Replace with your user ID string helper = \u0026amp;#34;\u0026amp;lt;UserID of VSO\u0026amp;gt;\u0026amp;#34;; assignedNew = …","cover":"","date":"2017-04-29","lastmod":"2017-04-29","legacy":true,"markdown":"https://bisser.io/archive/010-sync-visual-studio-online-items-to-outlook-task-list/index.md","readingTime":6,"summary":"","tags":[],"title":"Sync Visual Studio Online items to Outlook task list","uri":"/archive/010-sync-visual-studio-online-items-to-outlook-task-list/","url":"https://bisser.io/archive/010-sync-visual-studio-online-items-to-outlook-task-list/","wordCount":1149},{"categories":[],"content":"Microsoft recently announced that its newest task management app \u0026amp;ldquo;To-Do\u0026amp;rdquo;, which shall be the successor of Wunderlist, will soon be available. I\u0026amp;rsquo;m not going into detail about the functionality, because this is described here: https://blogs.office.com/2017/04/19/introducing-microsoft-to-do-now-available-in-preview/ and https://products.office.com/en-us/microsoft-to-do-list-app But as Microsoft announced the preview of To-Do, many people downloaded the app and tried to synchronize their Outlook tasks into the To-Do list - without success. The problem in most cases is that you can\u0026amp;rsquo;t even login with a work or school account in the app. Most probably you\u0026amp;rsquo;ll receive one of the two error messages, which are shown below:\nHowever, if you take a look on the comments in https://blogs.office.com/2017/04/19/introducing-microsoft-to-do-now-available-in-preview/ you\u0026amp;rsquo;ll notice, that almost everyone has the exact same issue. Digging a bit deeper, this link may help: https://todosupport.helpshift.com/a/microsoft-to-do/?s=account\u0026amp;amp;f=administration-of-to-do-in-office-365\u0026amp;amp;l=en\u0026amp;amp;p=web The point is that the support guys advise you to look at the O365 admin portal under Settings - Services \u0026amp;amp; add-ins where you should see the option of activating To-Do. In my case, there is no To-Do option available:\nBut there is a hint, how you still can use To-Do with a work or school account. It\u0026amp;rsquo;s a matter of the right license. Because there are two important cases, where To-Do is not available yet:\nOn-Premise installations of Exchange Server and Microsoft accounts that are not on Exchange Online. Office 365 Pro Plus, Business, Kiosk K1, Enterprise E5 without PSTN, Office 365 DE plans and Education accounts. And in my case I had an E5 license assigned. So after assigning an E3 license to my user, To-Do login with my O365 user succeeded and To-Do started working like charm. It instantly imported all my Outlook tasks and the synchronization between To-Do and my tasks in Outlook works great, as you can see below:\nUnfortunately, the screenshots of my To-Do app are in German, as I can\u0026amp;rsquo;t change the language of the app. I hope this helps you activating your To-Do app with your O365 account. Have fun managing your tasks!\n","cover":"","date":"2017-04-27","lastmod":"2017-04-27","legacy":true,"markdown":"https://bisser.io/archive/009-how-to-use-microsoft-to-do-even-when-there-is-no-option-of-activation-in-the-o365-tenant/index.md","readingTime":2,"summary":"","tags":[],"title":"How to use Microsoft To-Do, even when there is no option of activation in the O365 tenant","uri":"/archive/009-how-to-use-microsoft-to-do-even-when-there-is-no-option-of-activation-in-the-o365-tenant/","url":"https://bisser.io/archive/009-how-to-use-microsoft-to-do-even-when-there-is-no-option-of-activation-in-the-o365-tenant/","wordCount":329},{"categories":["AI","Bot Framework"],"content":"As you may know, Microsoft has released a Framework for building Bots on an Azure. You may encounter the problem that you are thrilled to start building a bot, but you don\u0026amp;rsquo;t know how to begin and where to find the resources. So I thought of providing you with a list of useful resources and links on the Bot Framework which you may want to conduct:\nOfficial Microsoft Bot Framework Blog Bot Framework - Making Bots More Intelligent Forwarding activities / messages to other dialogs in Microsoft Bot Framework New Bot Framework features and updates Bots are banging: Getting Started with the Microsoft Bot Framework \u0026amp;amp; Node.js Getting Started with Building Bots with Microsoft\u0026amp;rsquo;s Bot Framework Microsoft Bot Framework and Cognitive Services: Make your bot smarter! DevOps for the Bot Framework Telemetry for the Bot Framework Testing the Bot Framework Embeddable web chat control for the Microsoft Bot Framework Forwarding activities / messages to other dialogs in Microsoft Bot Framework ","cover":"","date":"2017-04-14","lastmod":"2017-04-14","legacy":true,"markdown":"https://bisser.io/microsoft-bot-framework-useful-resources-links/index.md","readingTime":1,"summary":"Microsoft Bot Framework - Useful resources \u0026 links","tags":["AI","Bot Framework"],"title":"Microsoft Bot Framework - Useful resources \u0026 links","uri":"/microsoft-bot-framework-useful-resources-links/","url":"https://bisser.io/microsoft-bot-framework-useful-resources-links/","wordCount":160},{"categories":[],"content":"Microsoft always claims, that all data from a customer is only stored in that region, where the Office 365 contract is bound to. Now that means, that all SharePoint Online data and Exchange Online data will only be stored in the EMEA datacenters, when the contract is bound to Microsoft Austria for example.\nNow if you take a look at http://o365datacentermap.azurewebsites.net/ there is already quite a big amount of datacenters existing (especially in the US and in EMEA). The point now is that, with the fast growth of Microsoft datacenters, customers do not know where their data is really stored, as it could make a difference for a company wether their mailboxes are stored in Austria or in Amsterdam or in Finland (due to legal restrictions).\nSo many IT admins ask the question: \u0026amp;ldquo;How can I check where my mailbox data is actually stored?\u0026amp;rdquo;\nAnd I finally have come up with an answer to that question. In order to check where the O365 mailbox data is stored you can download and execute my PowerShell script from here and execute as follows to check all mailboxes in your O365 tenant:\n.\\exo_check_mailbox_location.ps1 -username admin@bisser.at -password \u0026amp;#34;Pa$W0rd\u0026amp;#34; But sometimes you have the requirement that only some of your mailboxes need to be stored in a specific region due to legal restrictions. Therefore, you can use the same script with the following paramters:\n.\\exo_check_mailbox_location.ps1 -username admin@bisser.at -password \u0026amp;#34;Pa$W0rd\u0026amp;#34; -primarySMTPAddress stephan@bisser.at After running this script you will get an output which is similar to the following:\nSo this script can be run on a scheduled base in order to check where your data is really stored, if you have some legal restrictions, which need to be taken into consideration when using Office 365\u0026amp;hellip;\n","cover":"","date":"2017-04-10","lastmod":"2017-04-10","legacy":true,"markdown":"https://bisser.io/archive/007-get-the-storage-location-of-mailboxes-in-exchange-online/index.md","readingTime":2,"summary":"","tags":[],"title":"Get the storage location of mailboxes in Exchange Online","uri":"/archive/007-get-the-storage-location-of-mailboxes-in-exchange-online/","url":"https://bisser.io/archive/007-get-the-storage-location-of-mailboxes-in-exchange-online/","wordCount":288},{"categories":["AI","Cognitive Services"],"content":"Computer Vision#Most of us will quickly bring image analysis in conjunction with high mathematical formulas and pattern recognition algorithms. The Computer Vision API but is based on a completely different level of abstraction. If one sends a picture of a squirrel on the service, \u0026amp;ldquo;a squirrel is sitting on a rock\u0026amp;rdquo; and a percentage chance comes in response, how much you can trust the statement. In addition, their position, as well as dominant color values can be queried tags and categories (animal, outdoor etc.), including faces. For portals, where images are uploaded by users, marking of potentially racist or adult content is helpful.\nIn addition to the - almost unspectacular in comparison - OCR recognition (optical character recognition), which is also offered as a service, a very useful API stands out: the thumbnail service. From an arbitrary image, a thumbnail of the desired size is generated and it tries to choose the best cut-out. Detected a logo, is the image fully preserved and will only shrink. Photos faces and dominant objects as well as possible in the image remain, while the rest will be truncated.\nEmotion API#Who was already excited by the recognition of the age and sex, should have seen the Emotion API. Faces can be analyzed in terms of feeling expression: _Does the person look angry, shocked, scared, happy, neutral, sad or_surprised? The service works for pictures the same as for videos and is also available in a limited free version available (thirty thousand image requests, three hundred uploads per month). The premium packages are between 0.10 and 0.25 dollar per thousand transactions.\nFace API#The Face API cares less about the expression as to the identification of faces. While earlier, the position of the face is detected, this API also provides information about the eyes and eyebrows, nose and corners of the mouth. It is recognized that the person wears a beard or is a glasses on has. This data is in turn relevant to identify faces. The face API can determine whether two photos show the same person or not - and how inferior everywhere with a probability. The detection works doing surprisingly well, even if the faces are partially covered or look into the camera.\nVideo API#The vision categoriy is finally completed by some video services. From image stabilizers and detecting faces, already described a thumbnail service to determine of possible meaningful thumbnails available is also here. In addition to using \u0026amp;ldquo;Motiondetection\u0026amp;rdquo; sequences are detected, in which a movement takes place - whether it reliable is enough for the homemade alarm system, you need to decide.\n","cover":"","date":"2017-03-21","lastmod":"2017-03-21","legacy":true,"markdown":"https://bisser.io/cognitive-services-vision-category/index.md","readingTime":3,"summary":"Cognitive Services - Vision Category","tags":[],"title":"Cognitive Services - Vision Category","uri":"/cognitive-services-vision-category/","url":"https://bisser.io/cognitive-services-vision-category/","wordCount":430},{"categories":[],"content":"As a consultant dealing with Office 365 onboarding projects, I got one question quite often from my customers and partners:\n“Is it possible to check, if my domain is already registered in an Office 365 tenant?”\nThe reason, why I often get asked this question is that, many IT departments in most companies already did some research on Office 365 and the IT admins also often create a test tenant in order to check, what features are available and what can be done with O365. But that’s not a problem at all. The problem raises if the IT guys add their productive domain (e.g. bisser.at) to that test tenant and verify it as well.\nWhen they do that, they often play around a little and then forget about that until the management says that it’s time to go for O365, where I step into the game.\nUsually we then have some workshops and so one and create then a brand new O365 tenant in order to start using the cloud. There comes the first question: “How shall we call our tenant?” – which can take some time to be answered, especially, when you want to create a tenant with your company’s name, which is already existing. Luckily,Aaron Dinnage (Solution Specialist at Microsoft) came up with a solution in order to check if the preferred tenant name already exists. You can read more here After the tenant is created with the right name the next problem raises: “Why can’t I add my domain to that tenant?” and the answer is clear:\n“Because it is already registered to a tenant.”\nBut this is not the only reason, why I tried to come up with a solution to this question. The other reason is the troubleshooting aspect.\nWhen you invite an external person to your O365 tenant with his or her proper mail address, Azure AD could cause sign in problems.\nThe reason for that is that if you invite a person who doesn’t know about O365, the person just clicks on the invitation link in the mail and follows the instructions (setup account, create password, etc.) because the person is not aware, that he maybe already has an O365 user which has the same logon name as the mail address you invited.\nTherefore, the login process will fail and as a result the person calls you and says “I can’t login, please help me!”. And you as an admin then try to troubleshoot the problem leading to the fact that you will reset the password, send another invite and so on – always with the same result.\nIn order to avoid these pesky troubleshooting hours, my script shall come up with a solution, which you may think now is quite obvious: The user is already registered in an AAD tenant with the exact same mail address and must therefore login with these credentials.\nIn order to check if there is an AAD tenant already registered with that (SMTP) domain, you can use my script, which can be found here When you execute the script, you will have to pass 1 (or 2 params):\nDomain: This represents the domain you want to check against a possible O365/AAD registration UseAnotherAccount: This is an optional param, where you can use the option “Use another account” within the O365 login process, if you have cached some O365 credentials in the Internet Explorer So to run the script and check your domain, execute the following statement in a PowerShell window where you have stored that script:\n.\\o365_check_registered_domain.ps1 -domain \u0026amp;#34;bisser.at\u0026amp;#34; Or by using “Use another account”, you need to run the following:\n.\\o365_check_registered_domain.ps1 -domain \u0026amp;#34;bisser.at\u0026amp;#34; -useAnotherAccount $true After you execute this one, the PS will open up an IE window, which is not visible to you, navigating to https://portal.office.com and will try to insert a dummy user with that domain ending, in order to check if the domain is a known domain to Microsoft or not:\nIf the domain is already registered in O365/AAD, you will see the following output in your PS window:\nBut if the domain is not registered in an O365/AAD environment, you’ll see the following output, which means, that you’re good to go with that …","cover":"","date":"2017-03-08","lastmod":"2017-03-08","legacy":true,"markdown":"https://bisser.io/archive/005-check-if-domain-is-already-registered---verified-in-an-office-365-tenant/index.md","readingTime":4,"summary":"","tags":[],"title":"Check if domain is already registered/verified in an Office 365 tenant","uri":"/archive/005-check-if-domain-is-already-registered---verified-in-an-office-365-tenant/","url":"https://bisser.io/archive/005-check-if-domain-is-already-registered---verified-in-an-office-365-tenant/","wordCount":739},{"categories":[],"content":"Many companies, which use Office 365, especially Exchange Online, often do one thing during the onboarding phase:\nThe companies import contacts into their Office 365 tenant, in order to feed the Global Address List (GAL) with users and contacts, which the already onboarded users can then address via the GAL.\nThis setting is also helpful, when a multinational company decides to go for Office 365 (Exchange Online), where all users are not in one single Active Directory, but there is a multi-forest AD construct established. The migration or onboarding of all users is usually not a task within a couple of weeks, but months or years. Therefore, the use of contacts, which are imported into the Office 365 tenant, is useful for the already migrated users, so that the GAL is already populated from the beginning on during the migration process. This is always a requirement for the management board, because these kind of users are not in favor of remembering the contact information of all their colleagues.\nThe administrators usually have to fulfill the following steps for creating contacts from user objects originated in a different AD forest, which cannot be synchronized at first:\nExport user objects and relevant attributes from AD forests Import these objects as MailContacts (via O365 admin portal or PowerShell – New-MailContact) When the contacts are created in the O365 tenant and the users then have to be synchronized from the local AD, this will cause an error in Azure AD Connect. But why? SMTP match is a supported method of joining a local user object with a cloud object, if the SMTP address matches (which is usually the case when creating contacts in O365).\nBut there is a significant problem: The type of the contact, which was created in O365 – the MailContact\nThis is the default object type, when a contact is created via the O365 admin portal.\nThe following graphic should illustrate the problem: In the AADConnect synchronization service, you will get the following error message: “InvalidSoftMatch”, which is described here: https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-troubleshoot-sync-errors So what is the solution to this? The answer is easy: Replace the MailContact objects with MailUser objects. This can either be done by GUI or automated via PowerShell (Remove-MSOLContact followed by New-MailUser). This leads to the fact that if the user then gets created in the local AD and therefore gets synchronized via the Azure AD Connect service, the AD user gets merged via the SMTP soft-match mechanism and the MailUser in the AAD gets converted to a synchronized AD user:\nSo therefore: heads up when creating contact objects, if the contacts represent users, which eventually get synchronized via AADConnect sooner or later.\n","cover":"","date":"2017-02-22","lastmod":"2017-02-22","legacy":true,"markdown":"https://bisser.io/archive/004-office-365-merge-ad-user-with-aad-contact-via-azure-ad-connect/index.md","readingTime":3,"summary":"","tags":[],"title":"Office 365: Merge AD user with AAD contact via Azure AD Connect","uri":"/archive/004-office-365-merge-ad-user-with-aad-contact-via-azure-ad-connect/","url":"https://bisser.io/archive/004-office-365-merge-ad-user-with-aad-contact-via-azure-ad-connect/","wordCount":444},{"categories":[],"content":"As Office 365 groups are now more and more used in various Office 365 tenants, many administrators complain about a restriction setting. The problem is, that you can only allow or disable the creation of Office 365 groups for all users of your tenant. From an administrative point of view, this setting would be nice to have, because at the moment Microsoft is pushing groups but if you as an admin can’t control who is able to create groups and which groups can be created, this is nothing but a nightmare.\nAdditionally, if a user creates an O365 group with the e-mail address sales@company.com and you have to create an AD security group with the e-mail address sales@company.com , this would lead to a synchronization error in Azure AD Connect, saying, that there exists already an object with the e-mail address sales@company.com . You as an admin would then go to your AD and search for that object, resulting in nerve-stretching minutes, because you can’t find that object – of course not – because it only exists within your O365 tenant.\nSo in order to to restrict, which users should be allowed to create groups, the following PowerShell CmdLets will help you to achieve this goal.\nFirst of all, you have to install the Azure AD Powershell V1.1.130.0 public preview from here in order to have the right commands available.\nThen connect to your O365 tenant and connect to your Exchange Online environment within your PS and execute the following lines of code:\nGet-MsolCompanyInformation Set-MsolCompanySettings -UsersPermissionToCreateGroupsEnabled $True Then you would have to create a normal security group (in your AD or in cloud only) and add the members to that group, which should be able to create O365 groups. In my case this group is called “O365_Group_Creation”. After that exceute the following commands in your PS session:\n$grp = Get-MsolGroup -SearchString “O365_Group_Creation” $setting = Get-MsolAllSettings | Where-Object { $_.DisplayName -eq “Group.Unified” } $settingId = $setting.ObjectId $value = $setting.GetSettingsValue() $value[“GroupCreationAllowedGroupId”] = $grp.ObjectId $value[“EnableGroupCreation”] = $false Set-MsolSettings -SettingId $settingId -SettingsValue $value After you have executed the commands successfully, I would advise to test the creation of O365 groups with a user who is member of that security group (which should work) and with a user who is not member of that group (which should fail).\n","cover":"","date":"2017-02-17","lastmod":"2017-02-17","legacy":true,"markdown":"https://bisser.io/archive/003-restrict-office-365-group-creation--the-hidden-feature/index.md","readingTime":2,"summary":"","tags":[],"title":"Restrict Office 365 group creation – the “hidden” feature","uri":"/archive/003-restrict-office-365-group-creation--the-hidden-feature/","url":"https://bisser.io/archive/003-restrict-office-365-group-creation--the-hidden-feature/","wordCount":383},{"categories":["AI","Cognitive Services"],"content":"Microsoft just published a new article on the topic of Cognitive Services (formerlyProject Oxford). The Cognitive Services are a collection of SDKs and APIs along with services which should make your life easier if you want to build an intelligent application. These services basically leverage Microsoft\u0026amp;rsquo;s existing platforms and services like Machine Learning and so on to enable developers to create applications with intelligent features like the following:\nEmotion Detection Video Detection Speech Detection Face Recognition Speech Recognition Vision Recognition Language Understanding Speech Understanding Our vision is for more personal computing experiences and enhanced productivity aided by systems that increasingly can see, hear, speak, understand and even begin to reason.\nThe services are all hosted in Azure datacenters to ensure high performance and ease of use. You can start integrating these nice APIs and SDKs as Microsoft offers you to start with a free trial with the ability to upgrade it for production use later on. As all the APIs have a free trial plan to start with you can basically explore each service to find out if that fits your application and if it has the features you need to deploy an intelligent application…\n","cover":"","date":"2017-01-19","lastmod":"2017-01-19","legacy":true,"markdown":"https://bisser.io/cognitive-services-what-is-that/index.md","readingTime":1,"summary":"Cognitive Services - What is that?","tags":[],"title":"Cognitive Services - What is that?","uri":"/cognitive-services-what-is-that/","url":"https://bisser.io/cognitive-services-what-is-that/","wordCount":195},{"categories":[],"content":"As DirSync and Azure AD Sync will soon be not supported anymore, you should migrate your old DirSync Server to the new Azure AD Connect service. And theAzure AD Connect tool, which is the successor of the Azure AD Sync Service has a couple of new and cool features.\nOne of these features can develop to a real killer feature in some enterprises – Sync cloud users and groups to the on-premise Active Directory. As with the new Office 365 Groups a new group type joins Distribution and Security Groups in the cloud, the ability to sync these cloud groups back to the local AD, the enterprises do not have to go without the Office 365 groups in their local AD.\nUnfortunately the Office 365 group type is not part of the Microsoft Active Directory yet, but the Office 365 Groups, which are synchronized to the local AD are transformed to normal Distribution Groups, which then in turn, can be used in an on-premise Exchange deployment. In the future, these groups will may be integrated in the on-premise Active Directory and will replace the Security and Distribution Groups.\nThe same feature was published for users. Office 365 customers have now the ability to synchronize users, who were created in the cloud, to the local AD and use them for their on-premise applications. This leads to the fact, that you can create and manage users everywhere and do not need to be connected to your on-premise domain controller. Unfortunately you can, at the moment, only select one organizational unit to which the users get synchronized.\nBut as these features get updated in the future, I will provide you with detailed information as soon as the updates get announced, so stay on reading…\n","cover":"","date":"2017-01-07","lastmod":"2017-01-07","legacy":true,"markdown":"https://bisser.io/archive/001-azure-ad-connect-to-sync-users-and-groups-from-aad-to-local-ad/index.md","readingTime":2,"summary":"","tags":[],"title":"Azure AD Connect to sync users and groups from AAD to local AD","uri":"/archive/001-azure-ad-connect-to-sync-users-and-groups-from-aad-to-local-ad/","url":"https://bisser.io/archive/001-azure-ad-connect-to-sync-users-and-groups-from-aad-to-local-ad/","wordCount":291}]