Develop Alexa Skills for Amazon Echo with PHPRalf Eggert
Alexa and the Amazon Echo is one of the biggest players in the new area for digital language
assistents. Although there is no official support to build Alexa Skills with PHP, in early summer
2017 the most used German Skill was based on a PHP application. In this talk you will learn from
the author of this skill how to build Alexa Skills with PHP based on an open-source library. The talk
will present what you need to consider when building your Alexa Skill with your own HTTPS
endpoint server instead of an AWS Lambda function.
Introduction to building alexa skills and putting your amazon echo to workAbe Diaz
So you bough a brand new Echo/Tap/Dot device... now what? Well if you want to start hacking away and building your own skills this session is for you. We will cover the basic building blocks to get you up and running with your very own first custom skill.
AWS re:Invent 2016: Workshop: Creating Voice Experiences with Alexa Skills: F...Amazon Web Services
This workshop teaches you how to build your first voice skill with Alexa. You bring a skill idea and we’ll show you how to bring it to life. This workshop will walk you through how to build an Alexa skill, including Node.js setup, how to implement an intent, deploying to AWS Lambda, and how to register and test a skill. You’ll walk out of the workshop with a working prototype of your skill idea.
Prerequisites:
Participants should have an AWS account established and available for use during the workshop.
Please bring your own laptop.
Your First Amazon Alexa Skill - Presented at Desert Code Camp 2016.1
Learn enough to create, test, and deploy your first Amazon Alexa Skill.
http://oct2016.desertcodecamp.com/session/1210
http://codeaweso.me/presentations/your-first-amazon-alexa-skill/
Building a great experience is just step one. In this workshop, we build a custom Alexa skill and then show you how to build a backend that can handle the rush of customers when they come.
Voice is the most natural way for humans to communicate and will be the ubiquitous way to communicate with computer systems in the 21st century. Learn how you can voice enable your products or services by developing Voice-based Applications (aka Skills) for Amazon Alexa. After a quick state of the union, this talk will teach you to create a voice based user experience and to deploy it to Amazon Alexa. We will explain the main concepts of a voice application and we will show you how to create a Skill from scratch.
Level : 200 - coding experience required.
Develop Alexa Skills for Amazon Echo with PHPRalf Eggert
Alexa and the Amazon Echo is one of the biggest players in the new area for digital language
assistents. Although there is no official support to build Alexa Skills with PHP, in early summer
2017 the most used German Skill was based on a PHP application. In this talk you will learn from
the author of this skill how to build Alexa Skills with PHP based on an open-source library. The talk
will present what you need to consider when building your Alexa Skill with your own HTTPS
endpoint server instead of an AWS Lambda function.
Introduction to building alexa skills and putting your amazon echo to workAbe Diaz
So you bough a brand new Echo/Tap/Dot device... now what? Well if you want to start hacking away and building your own skills this session is for you. We will cover the basic building blocks to get you up and running with your very own first custom skill.
AWS re:Invent 2016: Workshop: Creating Voice Experiences with Alexa Skills: F...Amazon Web Services
This workshop teaches you how to build your first voice skill with Alexa. You bring a skill idea and we’ll show you how to bring it to life. This workshop will walk you through how to build an Alexa skill, including Node.js setup, how to implement an intent, deploying to AWS Lambda, and how to register and test a skill. You’ll walk out of the workshop with a working prototype of your skill idea.
Prerequisites:
Participants should have an AWS account established and available for use during the workshop.
Please bring your own laptop.
Your First Amazon Alexa Skill - Presented at Desert Code Camp 2016.1
Learn enough to create, test, and deploy your first Amazon Alexa Skill.
http://oct2016.desertcodecamp.com/session/1210
http://codeaweso.me/presentations/your-first-amazon-alexa-skill/
Building a great experience is just step one. In this workshop, we build a custom Alexa skill and then show you how to build a backend that can handle the rush of customers when they come.
Voice is the most natural way for humans to communicate and will be the ubiquitous way to communicate with computer systems in the 21st century. Learn how you can voice enable your products or services by developing Voice-based Applications (aka Skills) for Amazon Alexa. After a quick state of the union, this talk will teach you to create a voice based user experience and to deploy it to Amazon Alexa. We will explain the main concepts of a voice application and we will show you how to create a Skill from scratch.
Level : 200 - coding experience required.
David Isbitski - Enabling new voice experiences with Amazon Alexa and AWS LambdaWithTheBest
Alexa, the voice service that powers Amazon Echo and Amazon Fire TV, provides a set of built-in abilities, or skills, that enable customers to interact with devices in a more intuitive way using voice. Examples of these skills include the ability to play music, answer general questions, set an alarm or timer and more.
We will also be taking a quick look at how the healthcare industry is integrating with the Alexa Skills Kit for new use cases. With the Alexa Skills Kit, you can easily build and add your own skills to Alexa. Customers can then access these new skills simply by asking Alexa a question or making a command.
This workshop will be a walkthrough of the latest Alexa Skills Kit (ASK) and will teach you how to build your own skills for Alexa enabled devices, like the Amazon Echo. You will get hands on experience with an Amazon Echo device, the Alexa Skills Kit and AWS Lambda. You will also learn how to monitor your new skill using AWS CloudWatch and how to test your skill using both the Alexa Service Simulator, AWS Lambda Unit Tests and an Amazon Echo device.
David Isbitski
AWS re:Invent 2016: Voice-enabling Your Home and Devices with Amazon Alexa an...Amazon Web Services
Want to learn how to Alexa-power your home? Join Brookfield Residential CIO and EVP Tom Wynnyk and Senior Solutions Architect Nathan Grice, for Alexa Smart Home for an overview of building the next generation of integrated smart homes using Alexa to create voice-first experiences. Understand the technologies used and how to best expose voice experiences to users through Alexa. Paul and Nathan cover the difference between custom Alexa skills and Smart Home Skill API skills, and build a home automation control from the ground up using Alexa and AWS IoT.
Creating IoT Solutions with Serverless Architecture & AlexaAmazon Web Services
Learn how to develop voice-based serverless back ends for Alexa Voice Service (AVS) and Alexa devices using the Alexa Skills Kit (ASK), which allows you to add new voice-based interactions to Alexa. We’ll code a new skill, implemented by a serverless backend leveraging AWS services such as AWS Lambda.
Serverless Workflows on AWS - A Journey from SWF to Step FunctionsForrest Brazeal
Over the past year, my team and I designed and implemented multiple serverless workflow architectures on AWS to support continuous deployment of large enterprise applications. We pushed the limits of Amazon's SWF and Step Functions services, learned a lot about what works (and doesn't work) and lived to share our story with you.
Built around real world case studies, my talk features:
- A deep dive into possible serverless workflow architectures on AWS, using CloudWatch Events, Lambda, Step Functions, DynamoDB, SWF, and more
- Detailed comparison and contrast of Step Functions with older serverless AWS workflow solutions
- High-level discussion of when a serverless workflow architecture makes sense, and how to spot and avoid a workflow architecture that is "serverless for serverless' sake"
The most common way to start developing for Alexa is with custom skills while not too many of us except for device manufacturers get in touch with Smart Home skills on Alexa. This session introduces and demonstrates the power of Smart Home skills and it takes a look behind the technical scene of what happens in between an “Alexa, turn on the lights” and Alexa´s final “Ok” confirmation. Once you are familiar with the concept of Smart Home skills you will find out that it’s not just for implementing large-scale Smart Home solutions as the Smart Home API is also a great playground for your next Do it Yourself project. At the end of this session you’ve learned about the probably simplest way to build a Smart Home project with Raspberry Pi and AWS IoT – and you will be equipped with essential knowledge on how to build your own voice-controlled “thing”.
Why your next serverless project should use AWS AppSyncYan Cui
In this webinar, Yan Cui and Lumigo Software Engineer Guy Moses will discuss some of the power of GraphQL and AppSync and why AppSync + Lambda + DynamoDB should be your stack of choice in 2021 and beyond!
Automated testing is an essential part of assuring the quality and functional state of your software. One of the biggest challenges in automating your testing can be the simulating user interaction with your UI. For Alexa custom skills, users generally interact via multi-step conversations, which result in a request-response flow to your endpoint. The right set of tools and APIs can help you tackle the complexity of simulating such interactions in an automated fashion. This session demonstrates how to create conversational scripts that can be executed against an Alexa skill endpoint to validate the skill’s output against predefined assertions. You'll leave this talk armed with practical knowledge of how to establish powerful test automation suites for your Alexa skills, helping you ensure that your new skills behave exactly as you expect, and that you don’t accidentally break things while working on new versions. Bring your own laptop and AWS account.
Serverless computing allows you to build and run applications without the need for provisioning or managing servers. With serverless computing, you can build web, mobile, and IoT backends; run stream processing or big data workloads; run chatbots, and more. In this session, you’ll learn how to get started with serverless computing with AWS Lambda, which lets you run code without provisioning or managing servers. We’ll introduce you to the basics of building with Lambda and how you can benefit from features such as continuous scaling, built-in high availability, integrations with AWS and third-party apps, and subsecond metering pricing. We’ll also introduce you to the broader portfolio of AWS services that help you build serverless applications with Lambda, including Amazon API Gateway, Amazon DynamoDB, AWS Step Functions, and more.
Building APIs with Amazon API Gateway: re:Invent 2018 Recap at the AWS Loft -...Amazon Web Services
Building APIs with Amazon API Gateway: re:Invent 2018 Recap at the AWS Loft - San Francisco
API Gateways can simplify the work that a developer needs to do to build API based services by helping to standardize authentication and authorization, consumer interfaces, and management needs. With Amazon API Gateway you get all of this and more, including a completely serverless management of your APIs and the ability to host them at almost any scale. You also can get the benefits of the numerous types of APIs that are supported, from pubic to private, REST to Websockets, backed by almost any backend you can think of. In this session we’ll review the powerful capabilities of Amazon API Gateway and how you can get started building awesome APIs.
Speaker: Chris Munns - Principal Developer Advocate, AWS Serverless Applications
This presentation has the following objectives:
1.Understand Serverless Key Concepts.
2.Understand Event Processing Architecture.
3.Understand Operation Automation Architecture.
4.Understand Web Application Architecture.
5.Understand Data Processing Architecture.
a.Kinesis-based apps.
b.IoT-based apps.
Containerizing your Security Operations CenterJimmy Mesta
AppSec USA 2016 talk on using containers and Kubernetes to manage a variety of security tools. Includes best practices for securing Kubernetes implementations.
David Isbitski - Enabling new voice experiences with Amazon Alexa and AWS LambdaWithTheBest
Alexa, the voice service that powers Amazon Echo and Amazon Fire TV, provides a set of built-in abilities, or skills, that enable customers to interact with devices in a more intuitive way using voice. Examples of these skills include the ability to play music, answer general questions, set an alarm or timer and more.
We will also be taking a quick look at how the healthcare industry is integrating with the Alexa Skills Kit for new use cases. With the Alexa Skills Kit, you can easily build and add your own skills to Alexa. Customers can then access these new skills simply by asking Alexa a question or making a command.
This workshop will be a walkthrough of the latest Alexa Skills Kit (ASK) and will teach you how to build your own skills for Alexa enabled devices, like the Amazon Echo. You will get hands on experience with an Amazon Echo device, the Alexa Skills Kit and AWS Lambda. You will also learn how to monitor your new skill using AWS CloudWatch and how to test your skill using both the Alexa Service Simulator, AWS Lambda Unit Tests and an Amazon Echo device.
David Isbitski
AWS re:Invent 2016: Voice-enabling Your Home and Devices with Amazon Alexa an...Amazon Web Services
Want to learn how to Alexa-power your home? Join Brookfield Residential CIO and EVP Tom Wynnyk and Senior Solutions Architect Nathan Grice, for Alexa Smart Home for an overview of building the next generation of integrated smart homes using Alexa to create voice-first experiences. Understand the technologies used and how to best expose voice experiences to users through Alexa. Paul and Nathan cover the difference between custom Alexa skills and Smart Home Skill API skills, and build a home automation control from the ground up using Alexa and AWS IoT.
Creating IoT Solutions with Serverless Architecture & AlexaAmazon Web Services
Learn how to develop voice-based serverless back ends for Alexa Voice Service (AVS) and Alexa devices using the Alexa Skills Kit (ASK), which allows you to add new voice-based interactions to Alexa. We’ll code a new skill, implemented by a serverless backend leveraging AWS services such as AWS Lambda.
Serverless Workflows on AWS - A Journey from SWF to Step FunctionsForrest Brazeal
Over the past year, my team and I designed and implemented multiple serverless workflow architectures on AWS to support continuous deployment of large enterprise applications. We pushed the limits of Amazon's SWF and Step Functions services, learned a lot about what works (and doesn't work) and lived to share our story with you.
Built around real world case studies, my talk features:
- A deep dive into possible serverless workflow architectures on AWS, using CloudWatch Events, Lambda, Step Functions, DynamoDB, SWF, and more
- Detailed comparison and contrast of Step Functions with older serverless AWS workflow solutions
- High-level discussion of when a serverless workflow architecture makes sense, and how to spot and avoid a workflow architecture that is "serverless for serverless' sake"
The most common way to start developing for Alexa is with custom skills while not too many of us except for device manufacturers get in touch with Smart Home skills on Alexa. This session introduces and demonstrates the power of Smart Home skills and it takes a look behind the technical scene of what happens in between an “Alexa, turn on the lights” and Alexa´s final “Ok” confirmation. Once you are familiar with the concept of Smart Home skills you will find out that it’s not just for implementing large-scale Smart Home solutions as the Smart Home API is also a great playground for your next Do it Yourself project. At the end of this session you’ve learned about the probably simplest way to build a Smart Home project with Raspberry Pi and AWS IoT – and you will be equipped with essential knowledge on how to build your own voice-controlled “thing”.
Why your next serverless project should use AWS AppSyncYan Cui
In this webinar, Yan Cui and Lumigo Software Engineer Guy Moses will discuss some of the power of GraphQL and AppSync and why AppSync + Lambda + DynamoDB should be your stack of choice in 2021 and beyond!
Automated testing is an essential part of assuring the quality and functional state of your software. One of the biggest challenges in automating your testing can be the simulating user interaction with your UI. For Alexa custom skills, users generally interact via multi-step conversations, which result in a request-response flow to your endpoint. The right set of tools and APIs can help you tackle the complexity of simulating such interactions in an automated fashion. This session demonstrates how to create conversational scripts that can be executed against an Alexa skill endpoint to validate the skill’s output against predefined assertions. You'll leave this talk armed with practical knowledge of how to establish powerful test automation suites for your Alexa skills, helping you ensure that your new skills behave exactly as you expect, and that you don’t accidentally break things while working on new versions. Bring your own laptop and AWS account.
Serverless computing allows you to build and run applications without the need for provisioning or managing servers. With serverless computing, you can build web, mobile, and IoT backends; run stream processing or big data workloads; run chatbots, and more. In this session, you’ll learn how to get started with serverless computing with AWS Lambda, which lets you run code without provisioning or managing servers. We’ll introduce you to the basics of building with Lambda and how you can benefit from features such as continuous scaling, built-in high availability, integrations with AWS and third-party apps, and subsecond metering pricing. We’ll also introduce you to the broader portfolio of AWS services that help you build serverless applications with Lambda, including Amazon API Gateway, Amazon DynamoDB, AWS Step Functions, and more.
Building APIs with Amazon API Gateway: re:Invent 2018 Recap at the AWS Loft -...Amazon Web Services
Building APIs with Amazon API Gateway: re:Invent 2018 Recap at the AWS Loft - San Francisco
API Gateways can simplify the work that a developer needs to do to build API based services by helping to standardize authentication and authorization, consumer interfaces, and management needs. With Amazon API Gateway you get all of this and more, including a completely serverless management of your APIs and the ability to host them at almost any scale. You also can get the benefits of the numerous types of APIs that are supported, from pubic to private, REST to Websockets, backed by almost any backend you can think of. In this session we’ll review the powerful capabilities of Amazon API Gateway and how you can get started building awesome APIs.
Speaker: Chris Munns - Principal Developer Advocate, AWS Serverless Applications
This presentation has the following objectives:
1.Understand Serverless Key Concepts.
2.Understand Event Processing Architecture.
3.Understand Operation Automation Architecture.
4.Understand Web Application Architecture.
5.Understand Data Processing Architecture.
a.Kinesis-based apps.
b.IoT-based apps.
Containerizing your Security Operations CenterJimmy Mesta
AppSec USA 2016 talk on using containers and Kubernetes to manage a variety of security tools. Includes best practices for securing Kubernetes implementations.
Amazon Elastic Kubernetes Service (Amazon EKS) is a fully-managed, certified Kubernetes conformant service that simplifies the process of building, securing, operating, and maintaining Kubernetes clusters on AWS
https://thinkcloudly.com/?s=aws+Elastic+Kubernetes+Service+
How to build an event-driven, polyglot serverless microservices framework on ...Animesh Singh
Serverless cloud platforms are a major trend in 2016. Following on from Amazon’s Lambda service, released last year, this year has seen Google, IBM and Microsoft all launch their own solutions. Serverless microservices are executed on-demand, in milliseconds, rather than having to sit idle waiting. Users pay only for the raw computation time used.
In this talk detail how to build a distributed serverless, event-driven, microservices framework on OpenStack
Docker for developers on mac and windowsDocker, Inc.
The whole Docker ecosystem exists today because of every single developer who found ways of using Docker to improve how they build software; whether streamlining production deployments, speeding up continuous integration systems or standing up an application on your laptop to hack on. In this talk we want to take a step back and look at where Docker sits today from the software developers point of view - and then jump ahead and talk about where it might go in the future. In this talk, we’ll discuss:
* Making Docker an everyday part of the developing software on the desktop, with Docker for Windows and Docker for Mac
* Docker Compose, and the future of describing applications as code
* How Docker provides the best tools for developing applications destined to run on any Kubernetes cluster
This session should be of interest to anyone who writes software; from people who want to hack on a few personal projects, to polyglot open source programmers and to professional developers working in tightly controlled environments. Everyone deserves a better developer experience.
DCEU 18: Docker Containers in a Serverless WorldDocker, Inc.
Jules Testard - Software Engineer, Docker Inc
Since the advent of AWS Lambda in 2014, the Function as a Service (FaaS) programming paradigm has gained a lot of traction in the cloud community. Since then, interest has increased for developers and entreprises to build their own open source solutions on top of Kubernetes. A number of competing frameworks in this space have been developed. In this talk, we will look at three specific frameworks (OpenFaas, Nuclio and FN) and for each framework we will: Show how to create, deploy, and invoke a function using that framework Show how Docker images and containers are used by each framework under the hood Investigate how the frameworks leverage KNative to build, ship and run applications on Kubernetes
Slide deck from my talk at the London Salesforce Developers March meetup on using the Salesforce CLI to retrieve and deploy metadata, run tests, retrieve and update data and create metadata.
From Zero to Hadoop: a tutorial for getting started writing Hadoop jobs on Am...Alexander Dean
Hadoop is everywhere these days, but it can seem like a complex, intimidating ecosystem to those who have yet to jump in.
In this hands-on workshop, Alex Dean, co-founder of Snowplow Analytics, will take you "from zero to Hadoop", showing you how to run a variety of simple (but powerful) Hadoop jobs on Elastic MapReduce, Amazon's hosted Hadoop service. Alex will start with a no-nonsense overview of what Hadoop is, explaining its strengths and weaknesses and why it's such a powerful platform for data warehouse practitioners. Then Alex will help get you setup with EMR and Amazon S3, before leading you through a very simple job in Pig, a simple language for writing Hadoop jobs. After this we will move onto writing a more advanced job in Scalding, Twitter's Scala API for writing Hadoop jobs. For our final job, we will consolidate everything we have learnt by building a more sophisticated job in Scalding.
Get hands-on with security features and best practices to protect your containerized services. Learn to push and verify signed images with Docker Content Trust, and collaborate with delegation roles. Intermediate to advanced level Docker experience recommended, participants will be building and pushing with Docker during the workshop.
Led By Docker Security Experts:
Riyaz Faizullabhoy
David Lawrence
Viktor Stanchev
Experience Level: Intermediate to advanced level Docker experience recommended
A presentation delivered by Arctiq, onsite in Toronto, on Mar 1, 2017. The presentation discusses Ansible as an automation tool for Linux, Windows, and network devices. Reach out if you would like more information www.arctiq.ca
Paul Angus (ShapeBlue) - Push infrastructure with Ansible #DOXLONOutlyer
Ansible is one of the new breed of tools that encompasses configuration management, orchestration and software defined infrastructure. Find out how many companies are spinning up entire environments from source code including vm's, networks, dns, firewalls, load balancers etc.
Video: https://www.youtube.com/watch?v=unPVe2pcego
Join DevOps Exchange London here: http://www.meetup.com/DevOps-Exchange-London
Follow DOXLON on twitter http://www.twitter.com/doxlon
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
National Security Agency - NSA mobile device best practices
Build an Alexa Skill Step-by-Step
1. RICK WARGO - MAR 2017
BUILD AN ALEXA SKILL
STEP-BY-STEP
1
2. BUILD AN ALEXA SKILL STEP-BY-STEP
Introduction
▸ This tutorial will guide you step-by-step to create a new Alexa skill
▸ This example skill will interface with Twitter and read recent tweets from a query
▸ The aim is to be able to extend this workflow for your own use
▸ This skill will be called Twitter News and will be private
▸ This tutorial will not cover publishing a new skill - there is plenty of available
documentation on how to publish
▸ Please let me know if you use this to build a new skill — I welcome feedback!
2
3. BUILD AN ALEXA SKILL STEP-BY-STEP
Sample Interactions — Define Prior to Building New Skill
▸ The critical path to creating a great skill is pre-visualization of the skill
▸ Try to define the interactions as much as possible and maintain in a file, for example, Examples.txt
▸ Q: What's the latest news?
▸ A: The last 1 tweet was: Rick Wargo tweeted: Join me this Sat at 11:30am - we'll build an Alexa skill that interfaces with Twitter at #PhillyCode @PhillyDotNet.
▸ Q: What's the latest popular tweet?
▸ A: There were no matching tweets.
▸ Q: What is the last 5 tweets?
▸ A: The last 5 tweets were: Rick Wargo tweeted: Join me this Sat at 11:30am - we'll build an Alexa skill that interfaces with Twitter at #PhillyCode @PhillyDotNet. Alina retweeted
Stratisplatform's tweet: #Stratis are gold sponsors @PhillyDotNet on 24th-25th February explaining our #blockchain t…
▸ Q: What is the last tweet from Rick?
▸ A: The last 1 tweet was: Rick Wargo tweeted: Join me this Sat at 11:30am - we'll build an Alexa skill that interfaces with Twitter at #PhillyCode @PhillyDotNet.
▸ Q: Who tweeted?
▸ A: Recent tweets were from: Rick Wargo, Kucilo Oro, Alina, XTexplorer, and Mohammad Khalid.
▸ Q: Who shared?
▸ A: Recent tweets were from: Rick Wargo, Kucilo Oro, Alina, XTexplorer, and Mohammad Khalid.
3
4. BUILD AN ALEXA SKILL STEP-BY-STEP
Assumptions
▸ Implementing on OSX 10.12.3
▸ Using AWS Lambda and Node.js 4.3 to host code
▸ Linux-style commands used throughout
# Commands to be executed at the command line are in this style
▸ Input from interactive commands is in bold text
▸ References to files point to the completed version of the twitter-news-skill in Github
▸ Depending on copy/paste, some files may require retouching, mostly white-space, for lint to succeed
▸ All commands to be executed from skill directory unless otherwise noted
▸ Should work with slight modifications on Windows
4
5. BUILD AN ALEXA SKILL STEP-BY-STEP
User Interaction Flow
5
Twitter API
User
Voice Request Audio Stream
Twitter-News
Skill
Lambda
JSON Request
Node.js
JSON Response
(SSML+Card)
Response (Audio)
Response (Text/Graphics)
Audio Response
App/Web
JSON Response
(statuses)
GET search/tweets
7. BUILD AN ALEXA SKILL STEP-BY-STEP
AWS Credentials
‣ For command line access to AWS, store credentials in ~/.aws/credentials
$ cat ~/.aws/credentials
[default]
aws_access_key_id = OATLIM5W7KKX1V6PQ792
aws_secret_access_key = I2WiUyTkPI7b36PQnin11oUqgZVX575tSUAB1FOm
‣ This may already be done when setting up the AWS CLI
‣ Development on Windows will require a different approach to storing this file
Not my real credentials :)
7
8. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the Directory Structure
▸ Create a directory where both the Alexa skills and the Alexa App Server will live. All new
skills will live under here.
▸ For this tutorial, we’ll use ~/Code/alexa-js
▸ In that directory:
cd ~/Code/alexa-js
git clone https://github.com/rickwargo/alexa-app-root
mkdir alexa-js-apps†
▸ Install the node modules for alexa-app-root
cd alexa-app-root
npm install
8
†If you choose to call this directory something else, you’ll need
to update filesPath.server in gulpfile.js. You’ll
also need to update server.js and change app_dir to
point to the directory.
9. BUILD AN ALEXA SKILL STEP-BY-STEP
Create Certificate for HTTPS (if using)
▸ Install a self-signed certificate for HTTPS
gulp make-cert
[18:06:51] Using gulpfile ~/Code/alexa-js/test/alexa-app-root/gulpfile.js
[18:06:51] Starting 'make-cert'...
Generating RSA private key, 1024 bit long modulus
...++++++
.............++++++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Pennsylvania
Locality Name (eg, city) []:Blue Bell
Organization Name (eg, company) [Internet Widgits Pty Ltd]:epicminds
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Rick Wargo
Email Address []:cert@epicminds.com
[18:07:21] Finished 'make-cert' after 30 s
9
10. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Web Server is Running
▸ Browse to http://localhost:8003/test
▸ Also test https://localhost:8003/test
10
11. BUILD AN ALEXA SKILL STEP-BY-STEP
Start a New Skill
▸ Fork the alexa-app starter template, if desired
https://github.com/rickwargo/alexa-app-template
▸ Clone into a directory under alexa-js-apps
cd ~/Code/alexa-js/alexa-js-apps
git clone https://github.com/rickwargo/alexa-app-template twitter-news
▸ Alternately, all code is available from Github (don’t do this if you want to code by
hand)
cd ~/Code/alexa-js/alexa-js-apps
git clone https://github.com/rickwargo/twitter-news
11
12. BUILD AN ALEXA SKILL STEP-BY-STEP
Install Node Modules
▸ Use npm install to download and install all modules in package.json
cd twitter-news
npm install
12
13. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Fresh Installation
▸ Run the default tests using gulp
▸ test-mock runs the test runner framework (mocha, chai is the test framework) — only a few tests are shown below
gulp test-mock
[12:14:16] Using gulpfile ~/Code/alexa-js/alexa-js-apps/twitter-news/gulpfile.js
[12:14:16] Starting 'test-mock'...
App Starter Tests
starting up
✓ should fail if an unknown application id is provided
✓ should fail if a missing application is provided
...
My Intents
the story intent
✓ tells you the whole story
✓ tells a partial story when asked
Text
for exception message
✓ returns exception message if supplied
✓ returns message if supplied
21 passing (23ms)
[12:14:16] Finished 'test-mock' after 569 ms
13
14. BUILD AN ALEXA SKILL STEP-BY-STEP
Create an AWS IAM Role for Lambda Code Execution
▸ Name should be function name (later we’ll name it twitter-news-skill) followed by “-role”
aws iam create-role --role-name twitter-news-skill-role --assume-role-policy-document file://assets/json/aws/trust-policy.json
{
"Role": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": {
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
},
"RoleId": "ZG7523QZS8J7R951Y3C0J",
"CreateDate": "2017-02-27T17:59:56.785Z",
"RoleName": "twitter-news-skill-role",
"Path": "/",
"Arn": "arn:aws:iam::123456789012:role/twitter-news-skill-role"
}
}
▸ From the create-role output, copy Arn JSON value and update the role in config/aws-config.js
14
15. BUILD AN ALEXA SKILL STEP-BY-STEP
Attach Policy to Newly Created Role
▸ Attach an Amazon-managed policy to the twitter-news-skill-role
aws iam attach-role-policy --role-name twitter-news-skill-role --policy-arn
arn:aws:iam::aws:policy/AWSLambdaFullAccess
▸ Access can be changed by choosing a different policy below or roll your own
✦ AWSLambdaFullAccess
✦ AWSLambdaDynamoDBExecutionRole
✦ AWSLambdaBasicExecutionRole
15
16. BUILD AN ALEXA SKILL STEP-BY-STEP
Give the Alexa Service Access
▸ This is the same as adding the Alexa Skills Kit as a trigger to the Lambda
function
aws lambda add-permission --function-name twitter-news-skill --statement-id 1 --action
lambda:invokeFunction --principal alexa-appkit.amazon.com --region us-east-1
{
"Statement": "{"Sid":"1","Resource":"arn:aws:lambda:us-
east-1:100866613345:function:twitter-news-skill","Effect":"Allow","Principal":
{"Service":"alexa-appkit.amazon.com"},"Action":["lambda:invokeFunction"]}"
}
▸ More information can be found in the AWS Lambda Developer Guide
16
17. BUILD AN ALEXA SKILL STEP-BY-STEP
Edit config/aws-config.js prior to Pushing Lambda Code to AWS
▸ Ensure role is updated per Create an AWS IAM Role for Lambda Code Execution
▸ The region defaults to us-east-1 — update as necessary
▸ If you use a specific AWS credentials profile, update the profile value — defaults
to “default”.
▸ Update timeout and memorySize, if needed. The defaults of 3 seconds and
128MB are usually sufficient.
▸ Runtime should be nodejs4.3, unless a newer version was released after this
documentation
17
18. BUILD AN ALEXA SKILL STEP-BY-STEP
Update config/app-config.js prior to Pushing Lambda Code to AWS
▸ The applicationId can be left as-is until the skill is created on the Amazon
Alexa Developer Portal
▸ Update the applicationName to “twitter-news”
▸ Update the functionName to be the applicationName followed by
“-skill”, so it would be “twitter-news-skill”
▸ Update the description to reflect the skill’s intent, i.e. “Grabs the latest or
popular tweets about a specific topic”
18
19. BUILD AN ALEXA SKILL STEP-BY-STEP
Update Config Tests in test/test_config.js
▸ Due to changes to some default settings, tests need to be updated to reflect the change(s)
▸ Update AWS Config —> Property —> region test if changed from us-east-1
▸ Update AWS Config —> Property —> runtime test if changed from nodejs4.3
▸ Update AWS Config —> Property —> applicationName test to reflect the new application
name
▸ For example, change test/test_config.js (around line 47) such that it reads:
it('applicationName is twitter-news', function () {
var result = config.applicationName;
return result.should.equal('twitter-news');
});
19
20. BUILD AN ALEXA SKILL STEP-BY-STEP
Push Code to AWS Lambda
▸ Upload the code to AWS Lambda using “gulp push”
gulp push
▸ Upon successful completion, the test-lambda gulp task will pass all tests
20
21. BUILD AN ALEXA SKILL STEP-BY-STEP
Connect to the Alexa Developer Portal
▸ Browse to the Alexa Developer Portal
▸ Press Get Started > on the Alexa Skills Kit button
21
22. BUILD AN ALEXA SKILL STEP-BY-STEP
Create The Skill on the Alexa Developer Portal
▸ Press Add a New Skill in the top-right of the following page
22
23. BUILD AN ALEXA SKILL STEP-BY-STEP
Fill Out the Skill Information
▸ Keep the Skill Type as Custom
Interaction Model
▸ Set the Name to the application name
(defined previously), Twitter News
▸ Set the invocation name to the
application name (in lower case),
twitter news
▸ Leave Audio Player defaulted to No
▸ Press the Save button
23
24. BUILD AN ALEXA SKILL STEP-BY-STEP
Get the AWS Lambda ARN for the Lambda Function
▸ In the terminal window, get the function definition
aws lambda get-function --function-name twitter-news-skill
{
"Code": {
"RepositoryType": "S3",
"Location": “https://prod-04-2014-tasks.s3.amazonaws.com/snapshots/123456789012/twitter-news-
skill-00000000-0000-0000-0000-000000000000?X-Amz-Security-Token=..."
},
"Configuration": {
"Version": "$LATEST",
"CodeSha256": "JZKRixkiCQ5NQwHt5/tUna61fqDDfnWGKfgsWnyUJKA=",
"FunctionName": "twitter-news-skill",
"MemorySize": 128,
"CodeSize": 6575734,
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:twitter-news-skill",
"Handler": "index.handler",
"Role": "arn:aws:iam::123456789012:role/twitter-news-skill-role",
"Timeout": 3,
"LastModified": "2017-02-27T18:40:44.411+0000",
"Runtime": "nodejs4.3",
"Description": "Grabs the latest or popular tweets about a specific topic"
}
}
24
25. BUILD AN ALEXA SKILL STEP-BY-STEP
Configure the New Skill
▸ Click Configuration to set the skill’s endpoint
▸ We’ll skip the Interaction Model for now until we
develop the code
▸ Select AWS Lambda ARN for the Service
Endpoint Type and select the North America
region
▸ Copy the FunctionARN value from the previous
step into the text box under North America
▸ Keep the default of No in Account Linking
▸ Press Save
25
26. BUILD AN ALEXA SKILL STEP-BY-STEP
Update the Skill’s Application Id in config/applicationid.json
▸ From the previous step, copy the ID in the top-left of the page (under the
application name Twitter News) and paste it into the value for applicationId
in config/applicationid.json
▸ application.json is not stored in Github to keep the Id private
{
"applicationId": "amzn1.ask.skill.00000000-0000-0000-0000-000000000000"
}
26
27. BUILD AN ALEXA SKILL STEP-BY-STEP
Update package.json
▸ Update package.json to set alexa.applicationId to the value Id found in
Configure the New Skill
▸ Update name to “twitter-news” (the name of the application specified in config/
app-config.js)
▸ Update the version, description, author, license, and other URLs as necessary
27
28. BUILD AN ALEXA SKILL STEP-BY-STEP
Remove Sample Code
▸ Remove the sample StoryIntent and supporting dictionary and custom slot type
in index.js:
▸ Delete the block beginning with: Object.assign(app.dictionary, {
▸ Delete the block beginning with: app.customSlotType('STORY_TYPE',
▸ Delete the block beginning with: app.intent('StoryIntent', {
▸ Remove all the tests in test/test_intents.js — these were for the sample code
28
29. BUILD AN ALEXA SKILL STEP-BY-STEP
Create a New Twitter Application
▸ A new Twitter application is needed to gain keys
and secrets for API access
▸ Browse to https://apps.twitter.com/
▸ Press Create New App and fill out details
▸ Name: My-Twitter-News
▸ Note the name may be taken by another
application. Try to prefix with your organization
or initials. This name is not important for the skill
- only the access tokens and keys are necessary.
▸ Description: Grabs the latest or popular tweets
about a specific topic
▸ Website: http://example.com/twitternews
29
30. BUILD AN ALEXA SKILL STEP-BY-STEP
Grant Permissions to Twitter Application
▸ For this skill, we’ll only need read permission
▸ On the Permissions tab, select Read only
and press Update Settings
30
31. BUILD AN ALEXA SKILL STEP-BY-STEP
Twitter Application Keys and Access Tokens
▸ You’ll need both consumer and access token
▸ Click on the Keys and Access Tokens tab
▸ Near the bottom of the page press Create my access token. This will
provide the Access Token and Access Token Secret necessary to
connect to the Twitter API.
▸ Save the values and add to your environment under the following
environment variable names:
▸ TWITTER_CONSUMER_KEY
▸ TWITTER_CONSUMER_SECRET
▸ TWITTER_ACCESS_TOKEN_KEY
▸ TWITTER_ACCESS_TOKEN_SECRET
31
Not my real keys :)
Don’t skip the step! You’ll need to take appropriate actions
depending on your OS. For example, on Linux and OS X:
# Keys for twitter-news-skill
export TWITTER_CONSUMER_KEY='consumer key'
export TWITTER_CONSUMER_SECRET='consumer secret'
export TWITTER_ACCESS_TOKEN_KEY='token key'
export TWITTER_ACCESS_TOKEN_SECRET='token secret'
32. BUILD AN ALEXA SKILL STEP-BY-STEP
Configure Your Environment for Access to the Twitter
‣ Configure environment for keys for access to the Twitter API
‣ For OS X and Linux, add to ~/.bash_profile (or ~/.bashrc)
# Keys for twitter-news-skill
export TWITTER_CONSUMER_KEY=hSYvOtda3Ri74PkyuTOHrLMdf
export TWITTER_CONSUMER_SECRET=LXHvTRShADq0s8lOlHCPodPw1smNeJ5p6E8GyOlY9cM0Ti5QSX
export TWITTER_ACCESS_TOKEN_KEY=WVUXxMzZPrszP2AO3eQIogJNFIA2vqkO5bmRkCiO1zCdr7KSt6
export TWITTER_ACCESS_TOKEN_SECRET=tMOuVnb3nrlwtNgUtr9qCZTdEqj6SpqbJrt7uysGuf5oU
‣ Log out and log in again to set up environment
Not my real keys :)
32
33. BUILD AN ALEXA SKILL STEP-BY-STEP
Set Lambda Environment Variables for Access to Twitter
▸ After configuring a New
Twitter App, two pairs of
Keys/Secrets are available
for use
▸ Copy them and paste into
the Environment variables
section
▸ Enable encryption helpers
for more security
33
Not my real keys :)
34. BUILD AN ALEXA SKILL STEP-BY-STEP
Create Twitter Module to Gain Access to Twitter API
▸ Create lib/twitter.js and add the following code:
var Twitter = require('twitter');
/**
* Connect to the Twitter API. Gain access via environment variables.
* Optionally replace with actual strings (not recommended).
*/
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET
});
module.exports = client;
34
35. BUILD AN ALEXA SKILL STEP-BY-STEP
Add Tests for Twitter Module
▸ Create test/test_twitter.js and add the following code:
/*global describe, it, beforeEach */
'use strict';
var chai = require('chai'),
chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
chai.should();
////////////// Tests Twitter //////////////
describe('Twitter', function () {
describe('New Client', function () {
var twitter;
beforeEach(function () {
// here for code coverage
twitter = require('../lib/twitter');
});
it('should return an object', function () {
return twitter.should.be.an('object');
});
it('should have a version of at least 1.7.0', function () {
var versionCompare = require('./../vendor/version_compare');
var comparison = versionCompare(twitter.VERSION, '1.7.0');
return comparison.should.be.at.least(0); // same or higher version
});
});
});
35
36. BUILD AN ALEXA SKILL STEP-BY-STEP
Run Twitter Tests
▸ Run tests again, testing recently added Twitter tests
gulp test-mock # (or simply use the alias test, gulp test)
...
Twitter
New Client
✓ should return an object
✓ should have a version of at least 1.7.0
21 passing (32ms)
[10:59:20] Finished 'test-mock' after 338 ms
36
37. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the Intent — WhosTweeted
▸ This intent is designed to return the last N unique twitterers from tweets matching our search criteria
▸ This is a simple intent: it doesn’t take any slot values
▸ It is invoked when the Echo understands one of the following utterances while in the skill:
▸ Who tweeted recently
▸ Who shared recently
▸ Who recently tweeted
▸ Who recently shared
▸ It depends on being able to grab the latest tweets
▸ It depends on a function to take the latest tweets and find the last N unique twitterers (uniqueTwitterers)
▸ It depends on a function to take the last N unique twitterers and format them for output (recentTweetsFrom)
37
38. BUILD AN ALEXA SKILL STEP-BY-STEP
Create Unique Twitterers Function and Associated Tests
▸ Create the following files using the code available in https://github.com/
rickwargo/twitter-news
▸ lib/helpers/unique_twitterers.js
▸ lib/constants.js
▸ test/test_unique_twitterers.js
38
39. BUILD AN ALEXA SKILL STEP-BY-STEP
Run Twitter Tests for Unique Twitterers Function
▸ Run tests again, testing recently added Twitter tests
gulp test
...
Unique Twitterers
Users
of no length
✓ should be an empty list
of one unique user
✓ should be list of length one
✓ should be list of length one if duplicates
of multiple unique users
✓ should be a list of the unique users
✓ should be list of the unique users
26 passing (34ms)
39
40. BUILD AN ALEXA SKILL STEP-BY-STEP
Create Recent Tweets From Function and Associated Tests
▸ Create the following functions using the code available in https://github.com/rickwargo/twitter-news/blob/master/lib/text.js
▸ recentTweetsFrom
▸ noRecentTweets
▸ Add tests for recentTweetsFrom in test/test_text.js
describe('for recent tweets from', function () {
it('returns no one if no recent tweets', function () {
var result = Text.recentTweetsFrom([]);
return result.should.equal(Text.noRecentTweets);
});
it('returns one user if only one user', function () {
var result = Text.recentTweetsFrom(['alpha']);
return result.should.equal('Recent tweets were from: alpha.');
});
it('returns one user if only one user', function () {
var result = Text.recentTweetsFrom(['alpha', 'beta', 'gamma']);
return result.should.equal('Recent tweets were from: alpha, beta, and gamma.');
});
});
▸ Run tests using “gulp test” — there should now be 29 passing tests
40
41. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the WhoTweeted Intent Handler in index.js
▸ Add the following code into index.js
app.intent('WhoTweeted', {
utterances: [
'Who {tweeted|shared} {recently|}',
'Who recently {tweeted|shared}'
]
}, function (ignore, response) {
return Twitter.get('search/tweets', TwitterParams)
.then(function (tweets) {
var users = uniqueTwitterers(tweets.statuses, Constants.MAX_USERS);
var msg = Text.recentTweetsFrom(users);
response.say(msg);
});
});
▸ Add the following requires to index.js
Twitter = require('./lib/twitter'),
Text = require('./lib/text'),
Constants = require('./lib/constants'),
uniqueTwitterers = require('./lib/helpers/unique_twitterers');
41
42. BUILD AN ALEXA SKILL STEP-BY-STEP
alexa-utterances
▸ Utterances are kept with the skill definition in the code
▸ Utterances are condensed using alternation, being able to expand the
utterance with each word in the curly braces using the alexa-utterances node
module
▸ This module is installed by default with the starter template
▸ For more information refer to the project’s README
42
43. BUILD AN ALEXA SKILL STEP-BY-STEP
Add Tests for WhosTweeted in test/test_intents.js
▸ For testing, stub the Twitter.get() function with “sinon” returning a promise as the stub result instead of a call to the Twitter API
▸ To stub Twitter.get(), Add the following code before the tests
var sinon = require('sinon');
var sinonStubPromise = require('sinon-stub-promise');
sinonStubPromise(sinon);
▸ Add the following require’s
Text = require('./lib/text'),
Twitter = require(‘./lib/twitter');
▸ Add the following tests
▸ Include code block from around line 41 starting with describe('#WhoTweeted', function () {
▸ Wrap the preceding code block with:
describe('using a mock client', function () {
var get;
beforeEach(function () {
get = sinon.stub(Twitter, 'get').returnsPromise();
});
afterEach(function () {
get.restore();
});
// #WhoTweeted tests go here
});
▸ Run tests using “gulp test” — there should now be 32 passing tests
43
44. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the Intent — LatestTweets
▸ This intent is designed to return the last N tweets matching our search criteria
▸ This intent takes three slot values, two standard Amazon slot types and one custom slot type
▸ It is invoked when the Echo understands one of the following utterances while in the skill:
▸ What’s the most recent tweet
▸ For the news
▸ What are the last three tweets
▸ The last tweet from Rick
▸ It depends on being able to grab the latest tweets
▸ It depends on a function to take the last N tweets and format them for output (tweet2say)
44
45. BUILD AN ALEXA SKILL STEP-BY-STEP
Create Text Functions and Associated Tests
▸ Create the following functions using the code available in https://github.com/rickwargo/twitter-news/blob/master/lib/text.js
▸ lastTweets
▸ noMatchingTweets
▸ Add tests for lastTweets in test/test_text.js
describe('for LastTweet', function () {
describe('of a single item', function () {
it('is singular in its response', function () {
var result = Text.lastTweets(1);
return result.should.equal('The last 1 tweet was: ');
});
it('is plural in its response', function () {
var result = Text.lastTweets(2);
return result.should.equal('The last 2 tweets were: ');
});
});
});
▸ Run tests using “gulp test” — there should now be 34 passing tests
45
46. BUILD AN ALEXA SKILL STEP-BY-STEP
Create tweet2say Function and Associated Tests
▸ Create the tweet2say function using the code available in https://github.com/
rickwargo/twitter-news/blob/master/lib/helpers/tweet2say.js
▸ Create tests for the tweet2say function using the code available in https://
github.com/rickwargo/twitter-news/blob/master/test/test_tweet2say.js
▸ Run tests using “gulp test” — there should now be 41 passing tests
46
47. BUILD AN ALEXA SKILL STEP-BY-STEP
Prepare the LatestTweets Intent Handler in index.js
▸ Add the require for tweet2say to index.js
tweet2say = require('./lib/helpers/tweet2say'),
▸ Add dictionary near the top of index.js
Object.assign(app.dictionary, {
tweet: ['tweet', 'tweets', 'item', 'items', 'story', 'stories', 'news', 'news item',
'news items', 'news story', 'news stories', 'post', 'posts', 'update', 'updates',
'message', 'messages'],
whats: ['what is', 'what are', 'what's', 'about', 'give me', 'tell me'],
the: ['the', 'a', 'an']
});
▸ Add the custom slot for the intent handler to index.js
app.customSlotType('TWEET_CATEGORIES', ['popular', 'latest', 'recent', 'last']);
47
48. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the LatestTweets Intent Handler in index.js
▸ Add the following code to index.js
var TwitterParams = {
q: '#PhillyCode OR #PhillyCC OR @PhillyDotNet',
result_type: 'recent', // options: 'recent', 'mixed', or 'popular'
since_id: '',
include_entities: false
};
app.intent('LatestTweets', {
slots: {
Count: 'AMAZON.NUMBER',
User: 'AMAZON.US_FIRST_NAME',
TweetCategory: 'TWEET_CATEGORIES'
},
utterances: [
'{whats|} {the} {tweet}',
'{whats|} {-|Count} {tweet}',
'{whats|} {the} {most|} {-|TweetCategory} {tweet}',
'{whats|} {the} {most|} {-|TweetCategory} {-|Count} {tweet}',
'{whats|} {the} {most|} {-|TweetCategory} {tweet} from {-|User}'
]
}, function (request, response) {
48
49. BUILD AN ALEXA SKILL STEP-BY-STEP
Create the LatestTweets Intent Handler in index.js (cont’d)
▸ Add the following code to the end of the intent handler for LatestTweets in index.js
}, function (request, response) {
var max_tweets = Math.min(request.slot('Count') || 1, Constants.MAX_TWEETS);
var user = request.slot('User') || null;
var tweetCategory = request.slot('TweetCategory') || 'recent';
TwitterParams.result_type = tweetCategory.toLowerCase() === 'popular'
? 'popular'
: 'recent';
return Twitter.get('search/tweets', TwitterParams)
.then(function (tweets) { // Filter
var counter = 0;
return tweets.statuses.filter(function (tweet) {
// select if within max tweets and user matches, if specified
var select = (counter < max_tweets) && (!user || tweet.user.name.toLowerCase().indexOf(user.toLowerCase()) > -1);
if (select) {
counter += 1;
}
return select;
});
})
.then(function (tweets) { // Say matching tweets
var msg;
if (tweets.length > 0) {
msg = Text.lastTweets(tweets.length) + tweet2say(tweets);
} else {
msg = Text.noMatchingTweets;
}
response.say(msg);
});
});
49
50. BUILD AN ALEXA SKILL STEP-BY-STEP
Add Tests for LatestTweets in test/test_intents.js
▸ Add the following tests
▸ Include code block from around line 79 starting with describe('#LatestTweets', function () {
▸ Run tests using “gulp test” — there should now be 52 passing tests
▸ Add a test against the Twitter API instead of a mock
describe('against the Twitter API', function () {
describe('#LatestTweets', function () {
describe('response', function () {
it('contains the latest tweets', function () {
var result = request.intentRequest({name: 'LatestTweets'});
return result.should.eventually.match(/<speak>The last 1 tweet was:/);
});
});
});
});
▸ Run tests again using “gulp test” — there should now be 53 passing tests
50
51. BUILD AN ALEXA SKILL STEP-BY-STEP
Start Web Server for Testing Using the Web-based Interface
▸ Start the server with “npm start”
npm start
> alexa-app-root@1.0.0 start /Users/rick/Code/alexa-js/alexa-app-root
> node server.js --start
serving static content from: /Users/rick/Code/alexa-js/alexa-app-root/public_html
loading server-side modules from: /Users/rick/Code/alexa-js/alexa-app-root/server
loaded /Users/rick/Code/alexa-js/test/alexa-app-root/server/.gitkeep
loading apps from: /Users/rick/Code/alexa-js/alexa-js-apps/
loaded app [twitter-news] at endpoint: /alexa/twitter-news
enabling https
listening on https port 8443
listening on http port 8003
51
52. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Using the Web-based Interface
▸ Browse to http://localhost:8003/test/
▸ There should only be one app loaded:
twitter-news
▸ Click on Launch Request and press
submit; the welcome message should
appear. You can update the welcome
message in lib/text.js at
onLaunchPrompt.
▸ Experiment with the various intents to see
if they work as expected
52
53. BUILD AN ALEXA SKILL STEP-BY-STEP
Finalize Alexa Skill Configuration — Intent Schema
▸ Populate Interaction Model
▸ Using the test web page, copy the Schema (click on Schema in top-right and
then clock Copy to Clipboard) and paste into Intent Schema in Alexa Skill
page
53
54. BUILD AN ALEXA SKILL STEP-BY-STEP
Finalize Alexa Skill Configuration — Custom Slot Types
▸ Add a Custom Slot Type by pressing Add Slot Type and enter
TWEET_CATEGORIES for the type and the list of slot types from the test web
page under Values
54
55. BUILD AN ALEXA SKILL STEP-BY-STEP
Finalize Alexa Skill Configuration — Sample Utterances
▸ Add to Sample Utterances the list of utterances generated from the test web
page. Note how only a few lines of utterances in the code expanded to over
2,600 different utterances!
55
56. BUILD AN ALEXA SKILL STEP-BY-STEP
Build the Alexa Skill Interaction Model
▸ When all three areas are populated, press Save to build the interaction model
▸ You’ll see a message while it is building. It may take up to a minute to build the
model.
56
57. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill from Lambda - Create Test Event
▸ Select Configure test event from the Actions menu
57
58. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill from Lambda - Input Test Event
▸ Do not select a Sample event template -
just paste over what is there
▸ Copy the JSON from the Request tab on
the web test page and paste into the
code area
▸ Press Save
58
59. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill from Lambda - Perform the Test
▸ Press Test
▸ The Execution result should
show succeeded
59
60. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill from Alexa Skill Portal - Select Test Pane
▸ Press Test in the left panel to bring up the testing pane
60
61. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill from Alexa Skill Portal - Perform Test
▸ In the Service Simulator, enter what
is the latest news under Enter
Utterance and press Ask Twitter
News
▸ A valid Lambda Response should
appear
61
62. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill using echosim.io
▸ Go to https://echosim.io and sign in
to Echosim.io using your Amazon
account
▸ Don’t worry, it’s safe as it uses
OAUTH
62
63. BUILD AN ALEXA SKILL STEP-BY-STEP
Test Skill using echosim.io by Speaking
▸ Press the record button and say Ask
Twitter News for the latest
▸ You should hear the latest tweet
▸ Try testing other utterances
63
64. BUILD AN ALEXA SKILL STEP-BY-STEP
Test on Your Own Device
▸ If your Echo is linked to the same account as your Amazon developer account,
the skill is automatically enabled on your Echo and any other devices linked to
the same account
▸ Repeat the same questions to your Amazon Echo
▸ The skill is now ready for your enjoyment and tweaking!
64