►
Description
Recording of the SharePoint Framework and JavaScript development community call from 18th of January. Detailed description of covered topics and live demos from https://techcommunity.microsoft.com/t5/SharePoint-Developer/SharePoint-Patterns-amp-Practices-JavaScript-Special-Interest/m-p/147341#M4174
A
Hello
and
welcome
to
the
SharePoint
framework
and
JavaScript
special
interest
group
bi-weekly
meeting.
It
is
January
18th
2018
I
am
Patrick
Rodgers
I'm
very
happy
to
have
everybody
here
on
the
call
with
us
today
and
all
of
you
who
might
be
watching
this
later.
As
always,
we
want
to
start
with
a
quick
overview
of
what
these
calls
are
in
case
you're
new
to
the
calls
are
new
to
watching
the
recordings.
A
So
these
special
interest
group
calls
are
part
of
the
larger
SharePoint
patterns
and
practices
program
and
they
were
developed
because,
frankly,
we're
a
victim
of
our
own
success
and
the
program
had
grown
enough
that
we
weren't
able
to
cover
all
the
areas
on
the
monthly
calls
that
we
wanted
to
cover
anymore.
So
what
we
did
is
introduce.
These
special
interest
group
calls
you're
on
the
one
for
client,
side,
development
and
SharePoint
framework
as
well.
We
have
one
for
the
the
c
s--
on
powershell
development
practices
as
well.
A
Welcome,
of
course,
to
attend
as
many
of
these
as
you
would
like,
and
the
idea
is.
We
can
dive
a
little
bit
deeper
into
these
topics
and,
in
our
case,
that's
going
to
be
an
open
discussion
around
the
SharePoint
framework
and
the
client-side
development
patterns
associated
with
SharePoint
framework
and
with
developing
client-side
in
SharePoint.
So
that
might
be
not
in
the
SharePoint
framework.
It
might
be
more
traditional
ways
through
script,
editors
and
things
like
that.
A
We
try
and
cover
all
the
various
client-side
methods,
but
with
a
focus
on
the
new
SharePoint
framework
and
then
as
well.
We
talk
about
the
JavaScript
core
components
or
core
libraries
that
we're
developing
here
in
patterns
and
practices,
together
with
all
of
you
out
in
the
community
to
help
enhance
everyone's
SharePoint
client-side
development
life.
A
The
idea
being,
we
can
all
make
everybody's
work
a
little
bit
easier,
a
little
bit
better
by
working
together
and
sharing
what
we
come
up
with.
So
two
links
there
on
the
bottom
of
the
slide:
the
first,
the
AKMs
SP
P
and
P
community.
That's
going
to
take
you
to
the
Microsoft
tech
community
site,
which
is
a
great
place
to
post
general
questions.
General
SharePoint
development.
A
You
know
asks
how
do
I
do
this
or
that
could
somebody
look
at
my
code,
those
sorts
of
things
that
aren't
necessarily
perhaps
related
specifically
to
one
of
the
libraries
or
one
of
the
or
to
SharePoint
framework,
necessarily
exactly
but
just
sort
of
more
general
questions.
A
great
forum
for
that
one
thing,
I
want
to
say
is
all
of
us:
have
a
lot
of
channels
in
our
lives,
the
tech
community
being
one
Twitter
and
git
er
and
all
the
other
things
so
sometimes
we'll
miss
your
question.
We're
absolutely
not
trying
to
ignore
anybody.
A
A
If
it's
been
a
couple
days
or
even
in
the
initial
question,
be
like
you
know,
hey
Patrick
or
you
know,
hey
Owen.
If
it's
a
PowerShell
thing,
something
like
that,
we're
always
looking
to
help
it's
just
we
got
so
much
going
on.
We
don't
always
catch
everything
right
away.
The
second
link
there
AKMs
SP,
dev
Docs,
takes
you
to
the
official
SharePoint
documentation,
development,
documentation
and
that's
something
that's
a
constant
state
of
improvement,
but
it
is
what
we
have
now
and
that's
going
to
cover
SharePoint
framework.
A
So
if
you're
looking
to
get
started
in
a
SharePoint
framework
and
are
new
to
that,
please
check
that
out,
but
as
well.
It's
going
to
cover
you
know
more
classic
SharePoint
development
patterns
to
provide
our
host
applications,
full
trust
code,
things
like
that
are
all
covered
in
that
documentation.
So
check
that
out
and
of
course,
like
everything,
always
looking
for
feedback
on
improving
the
documentation
along
with
everything
else
we
do.
A
So
what
are
we
going
to
cover
today?
Vasa
is
out
on
a
well-deserved
vacation,
so
hopefully
he
is
relaxing
somewhere
and
enjoying
a
nice
bit
of
sunshine.
Unless
he's
back
in
Finland,
then
it's
probably
cold,
so
we're
gonna.
Do
a
quick
update
on
the
JavaScript
client
libraries
talk
about
that.
We've
got
an
update
on
the
office,
365
CLI,
an
update
on
the
reusable
client
controls,
and
then
we've
got
three
great
demos
for
this
call.
A
Today,
I'm
really
excited
to
get
these
community
demos
in
we've
got
Kyle
Schaeffer
who's,
written
a
tool
called
SP
engineer:
we've
got
Louis
Mena's
who's
gonna,
do
he's
done
a
field
customizer
which
is
very
cool
and
then
Frank
cornu
has
done
SP
FX,
BOTS
extension,
which
is
also
very
cool.
So
three,
really
cool
demos.
A
A
Frankly,
personally,
I'm
excited
to
see
what
folks
are
doing
out
there
with
SharePoint
framework
or
with
the
other,
the
patterns
and
practices
client-side
libraries,
so
you
can
demo
really
any
kind
of
client-side
SharePoint
work
you're
doing
on
the
call
all
you
have
to
do
is
get
in
touch
with
myself
or
vasa,
and
we
will
get
you
on
a
call.
One
thing
I
do
want
to
say:
we
can't
always
get
you
on
the
next
call.
A
It
might
already
be
full
on
the
agenda,
but
we
will
get
you
on
a
call
if
you
do
want
to
do
a
demo,
so
please
just
reach
out
to
us
I
think
it's
one
of
the
more
valuable
features
of
these
special
interest
group
meetings.
The
next
way
you
can
contribute
on
github,
so
methods
to
contribute
on
github,
of
course,
are
submitting
feedback
questions
issues
if
you
find
bugs
in
the
code
or
you
think
you
found
a
bug
in
the
code-
please
let
us
know
or
submitting
code.
A
So
if
you
see
an
issue
that
you
can
fix,
we're
going,
you
know
you
submit
a
pull
request
for
that.
One
of
the
my
goals
for
the
next
year
is
to
do
a
much
better
job
of
getting
more
issues
in
the
list
from
my
road
map
that
have
helped
wanted
tags
on
them.
So
folks
have
a
better
way
to
see
ways.
They
can
easily
jump
in
and
help
out.
A
So
that's
one
of
my
goals
to
help
people
get
involved
on
the
coding
side
and
so
to
try
and
keep
me
honest
on
that,
but
really
any
kind
of
feedback
we
get
and
that's
sort
of
the
fourth
point
there
on
the
right
side
of
the
slide,
any
feedback
we
get,
whether
it's
on
the
library
is
whether
it's
on
SharePoint
framework,
whether
it's
on
these
meetings
or
the
documentation
or
really
anything.
We
always
appreciate
and
look
at
that
feedback
we
get
from
folks.
A
We
can't
always
act
on
it
immediately
and
we
won't
always
necessarily
do
you
know
exactly
that
piece
of
feedback,
but
they
all
are
appreciated.
They
all
are
looked
at
and
reviewed
at
by
everybody
on
the
team.
So
we
take
that
stuff
very
seriously
and
we
definitely
encourage
you
as
much
as
possible
to
give
us
any
feedback
you
have.
We
are
here
to
listen
and
want
to
take
that
feedback.
So
that's
some
ways
to
get
involved
in
the
special
interest
group
or
the
patterns
of
practices
program.
A
Overall,
we're
gonna
move
now
to
an
update
here
on
the
JavaScript
core
components
or
the
actually
we're
gonna
sort
of
expand.
This
title
to
be
the
client-side
libraries
and
what
this
is
now
gonna
cover
is:
we've
got
the
scoped
libraries,
so
the
at
P
and
P
scoped
libraries
I
said
I
was
gonna,
do
a
release
on
the
15th,
which
did
not
happen
and
we'll
talk
about
that
in
just
a
second.
A
But
I
did
release
what
I
called
an
RC
0,
so
a
release
candidate
0,
which
is
basically
going
to
be
the
code
that
gets
released
at
GA.
So
that's
out
there,
so
you
could
do
you
know
npm
install
at
PMP,
SP
and
you're
gonna,
get
that
release
candidate
0
and
be
able
to
try
that
out
and
use
that
ahead
of
what
I
hope
to
be
the
release
on
the
22nd.
The
delay
is,
with
vasive
being
out
he's
the
one
that
has
access
to
publish
to
the
main
office.
A
Dev
blogs,
we're
gonna,
make
the
release
announcement,
so
the
blog
posts
are
written,
everything's,
ready
to
go
and
he's
back
next
week,
we'll
get
the
release
pushed
out
and
get
that
through
all
the
channels.
So
folks,
no
but
I
did
want
to
invite
folks
do
check
out.
We've
got
the
updated
docs
site
at
PNP,
github
io,
slash,
P,
&,
P,
you're
gonna
get
to
see
my
amazing
website
design
skills
in
play.
There
I
used
blue,
which
is
very
exciting
for
me,
but
do
check
out
the
docs.
A
Obviously,
the
design
could
use
work,
but
also
very
innocent
feedback
on
the
content
of
those
Doc's,
so
want
to
improve
that
as
much
as
we
can.
So,
if
there's
things
missing
or
things
that
could
be
said
better
or
examples
that
could
be
included,
that
would
really
help.
Please,
just
let
us
know
and
that's
something
we
want
to
build
up
a
backlog
of
and
work
to
improve
those
as
much
as
we
can
so
again.
A
Great
pieces
of
feedback
from
the
community
around
the
documentation
for
the
SPP
and
pjs
library
did
a
304
release
on
Monday
have
some
new
features
and
fixes
that
was
all
based
again
on
the
feedback
and
the
issues
folks
reported
features
they
wanted
to
see.
So
do
keep
all
that
feedback
coming
and
there
are
I
wanted
to
call
out
there's
two
issues
in
the
list
right
now
that
are
more
discussions.
A
One
is
around
large
batch
handling
and
possibly
adding
some
support
to
the
library,
for
that
and
the
other
is
around
baking
in
a
method
to
get
all
items
in
a
list
in
one
call,
so
it
be
web
list.
Yet
all
items
are
something
similar
so
join
those
discussions.
Let
us
know
your
thoughts
if
you
have
use
cases
for
either
of
those
that
really
helps
us
understand
the
need
for
those
methods
and
the
value
and
building
those
out
and
also
helps
us
craft.
A
The
best
way
to
build
those
out
to
help
support
those
use
cases
so
again
keep
all
that
great
feedback
coming
I
did
want
to
talk
about
a
little
bit
today.
One
of
the
questions
I
think
I
think
it
was
Kenny
on
Twitter
asked
me
and
we've
gotten
before
that
the.
Why
would
I
use
these
client-side
libraries?
Why
would
I
bring
these
into
my
project
and
so
I
wanted
to
kind
of
cover
that
and
talk
about
that
a
little
bit?
A
You
know
sort
of
my
thoughts
on
that,
and
this
is
another
place
if
folks
have
questions
and
want
to
continue
this
conversation,
I
absolutely
would
love
to
do
so.
But
really
one
of
the
main
things
for
me
is
it
encapsulates
the
underlying
rest
complexity.
So
you
think
about
if
I
just
want
to
do
a
get
request
to
a
list,
there's
no
complexity.
There,
that's
very
easy.
A
You
just
put
the
URL
and
do
the
request,
but
when
you
start
to
do
these
posts
and
start
to
add
items
and
these
sorts
of
activities,
you
really
have
to
understand
what
the
the
JSON
structure
you're
gonna
send
and
all
these
sorts
of
things
and
we've
tried
to
encapsulate
all
that.
So
you
can
just
add
a
method
with
a
plain
object
or
I'm.
A
Sorry,
add
an
item
with
the
plane
object
things
like
that
and
not
necessarily
know
exactly
what's
getting
sent
back
and
forth
to
the
server
we've
tried
to
surface
that
and
smooth
that
out,
as
well
as
smoothing
out
a
lot
of
the
differences
when
calling
it
in
verbose
or
non
verbose
mode
for
the
OData
and
things
like
that.
So
a
lot
of
the
work
like
if
I
was
starting
a
project
I
would
do
we've
tried
to
do
for
you,
so
you
can
take
that
work
and
just
run
with
it.
A
The
second
point
is
a
repeatable
development
pattern,
and
this
is
something
especially
for
large
organizations
if
you've
ever
been
on
really
large
projects,
but
I.
Imagine
most
the
folks
on
this
call
have
having
a
repeatable
pattern
that
folks
can
use
and
build
on
is
really
valuable
and
that's
another
source
of
value
for
these
libraries
is
we're
trying
to
give
you
a
repeatable
pattern
to
use
in
your
applications.
So
that's
what
that
way.
If
you're
developing
one
piece
and
you
move
over
to
look
at
another
piece,
maybe
somebody
else
has
done
it's
more
immediately
obvious.
A
On
top
of
that.
So
that's
a
big
point
for
me
is
that
we
easily
allow
you
to
build
what
you
need
to
build
on
top
of
the
work
we've
done.
We've
got
examples
out
there
on
that.
We
could
certainly
have
more
and
we'll
work
on
improving
those
examples,
but
that's
another
big
point
for
me
and
the
final
point,
I
think
is
really
valuable
and
sometimes
as
undersold
is
that
all
of
this
work
is
community
driven.
A
So
if
you
have
ideas
for
enhancements
or
things
that
would
make
the
libraries
better,
we
want
to
hear
those
and
we
want
to
improve
so
whether
you
want
to
submit
a
pool
request.
So
we
can
get
your
code
put
into
the
library
which
is
fantastic
or
you
just
want
to
sort
of
say.
I've
got
this
idea
for
an
enhancement.
If
somebody
else
wants
to
work
on
it
also
fantastic,
but
that
idea
of
community
driven
means
we
all
get
to
benefit
from
all
of
our
ideas
and
work.
So
it's
not
just
something.
A
You
know
the
patterns
and
practices
core
team
is
just
putting
out
on
our
own.
It's
really
all
of
us
as
a
community.
Building
this
together
and
so
I
want
to
like
I
said.
One
of
my
goals
for
next
year
is
to
really
encourage
more
people
to
get
involved
on
the
coding.
Russ
has
a
question
where
you
get
a
feedback
on
the
documentation.
There's
a
link
at
the
bottom.
A
That
says
I
forget
exactly
what
it
says,
but
it
says
something
about
creating
an
issue
and
that'll
actually
up
should
actually
open
up
an
issue
with
the
title
already
populated.
For
that
pages
path-
and
you
could
yep
that's
the
one
and
just
give
us
any
issue-
suggestions
there
and
we'll
start
building
a
backlog
on
the
documentation
stuff
and,
as
we've
talked
about
on
some
of
the
other
calls.
A
The
docs
are
right
there
next
to
the
code
now
so
I
think
that
process
is
going
to
be
a
lot
easier
than
having
to
then
separately
go
update
the
wiki
every
time,
so
we'll
see
how
that
works.
I
think
it'll
be
a
little
easier
well
we'll
see,
but
anyway,
I
want
to
talk
a
little
bit
about
why
using
the
libraries
is
valuable
so
again
under
cap,
encapsulating
the
complexity
for
you,
repeatable
development
patterns
that
extensibility
and
sort
of
our
light
touch.
A
We've
tried
to
type
as
much
of
the
SharePoint
API
surface
as
we
can
and
then
as
well,
that
community-driven
aspect
that
I
think
is
really
valuable
and
at
the
end
of
the
day
as
Russ
says,
this
really
is
working
to
save
everybody
time
and
let
all
of
you
as
developers,
focus
on
what
you
want
to
do
and
maybe
not
the
nitty-gritty
of
how
to
do
each
task,
but
just
know
I
want
to
add
an
item
call
add
an
item
done
so
like
I
said.
Let's
continue
that
conversation.
A
If
folks
would
like
would
love
to
help
folks
understand
the
value
I
see
in
the
library
and
hopefully
the
value
others
see
in
the
library
so
stepping
into
the
office
365
CL
I
want
to
do
an
update,
got
these
bullet
points
from
Waldeck
yesterday
and
so
there's
a
new
beta
out
0.50.
It's
got
more
commands
for
managing
site
design,
site
script,
sites,
lists
and
custom
actions,
some
great
contributions
from
Velan,
Robert
and
Daniel,
and
they
contributed
some
new
functionality.
A
Some
of
those
commands
and
then
as
well
minor
bug,
fixes
and
improvements
are
in
that
beta
release
and
again,
if
you'd
like
to
contribute
to
something,
the
patterns
and
practices
program
is
doing
the
office.
365
is
another
great
place.
You
can
jump
in.
Excuse
me
and
contribute.
Those
commands
are
all
fairly
atomic.
A
So
if
you
want
to
write
a
command,
it's
fairly
simple,
to
write
a
command,
it
can
treat
that
in
and
wallah
Beck
wanted
me
to
share
the
December
17
stats,
so
stats
from
this
just
last
December,
obviously
737
downloads
for
the
month
on
NPM,
48%,
Mac,
48%,
Windows,
IIIi,
don't
know
what
the
other
4%
would
be
there
and
then
11
33
page
views
on
the
docs.
So
some
great
initial
stats,
some
great
initial
uptake
on
the
CLI
I
think
December
was
the
first
full
month
that
was
out
I.
Think
so
really
impressive
numbers.
A
If
you
haven't
checked
this
out,
do
have
a
look
at
the
CLI.
Some
really
valuable
cross-platform
management
capability
there,
if
you're
not
able
to
use
some
of
the
PowerShell
work
and
then
stay
in
touch,
so
he's
got
he's
following
the
hashtag
office,
365
CLI
on
Twitter,
there's
a
git
er
channel
and
as
well
that
link
a
kms
365
CLI
will
take
you
to
that
git
er
channel
and
then
the
the.
Why
would
you
use
this
stuff
again?
The
powershell
commandlets
are
currently
only
available
on
the
Windows
platform.
A
So
now
we
got
updates
on
the
reusable
components.
We
talked
about
these
a
little
more
in
depth
on
the
last
call,
but
wanted
to
provide
an
update.
These
are
from
Elio
he's
been
working
to
improve
these
over
the
last
couple
weeks
and
for
the
controls
react
he's
fixed
a
file
type
icon
works
in
the
SPF
X
extensions
and
I
was
a
bug
that
was
out
there
and
he's
in
the
process
of
working
on
a
rich
text.
A
Editor
I
know:
that's
been
a
big
ask
for
folks
both
within
these
controls
and
within
SharePoint
framework
is
rich
text,
editing
capability,
and
so
that's
Helios.
Working
on
that
now,
I
don't
have
a
timeline
to
tell
you,
but
it's
it's
in
the
in
the
process
and
then
for
the
property
controls
the
people
picker.
You
can
now
pick
single
or
multi,
select
people
based
on
the
settings
for
that
control
and
he's
working
on
a
code,
editor
property
field.
So
that's
similar
work
to
the
rich
text
editor
and
that's
in
the
pipeline.
A
If
you
haven't,
do
check
out
the
webcast,
that's
a
big
link.
I'll
include
that
link
in
the
the
post,
for
this
call
recording
when
that
goes
up
but
devdas
column,
slash,
blogs,
slash,
webcast,
reusable
controls
for
your
SharePoint
framework
solutions.
All
with
dashes
I'm,
like
I,
said
I'll
include
that
link
in
the
post
for
the
call.
A
So
if
you
haven't
checked
out
the
controls
again,
another
great
piece
of
functionality
from
the
Patterson
practices
program,
you
can
pick
that
up
drop
that
into
your
applications
and
really
work
to
save
you
some
development
time
and
give
you
those
repeatable
consistent
patterns.
You
know
across
your
applications.
A
Alright,
so,
like
I
said,
we've
got
three
big
demos.
Today,
the
first
one
is
gonna,
be
from
Kyle.
Schaeffer
he's
got
a
tool
he's
written,
called
SP
engineer
hello
at
this
point,
our
recording
of
Kyle's
demo
during
the
call
lost
video.
So
we
have
gotten
Kyle
he's
graciously
agreed
to
re-record
his
demo
for
us,
and
we've
dropped
that
into
the
middle
of
this
video.
So
this
will
seem
a
little
disjointed,
but
this
is
Kyle's
demo
Kyle
Schafer's
demo
from
Thursday
the
18th
of
January
inserted
magically
into
the
video
starting
now.
B
Great
thanks
patch.
Hopefully,
second
time
is
a
charm
here,
hey
guys,
I'm
excited
to
introduce
you
to
SharePoint
engineer,
which
is
a
command-line
tool
that
we
created
here
at
spÃritus
to
do
configuration
operations
essentially
in
your
SharePoint
environment,
and
it's
really
built
to
help
developers
and
teams
of
developers
store
their
configuration
operations
in
in
source
control.
B
And
that
being
said,
not
trying
to
replace
any
of
that
existing
functionality,
we're
not
suggesting
at
all
that
the
engineer
should
be
the
only
tool
that
you
use,
we're
just
trying
to
create
a
tool.
That's
adding
a
tool
belt
and
just
another
option
that
you
can
use
to
consider
to
do
configuration
options
in
your
SharePoint
environments
and
in
particular
we
really
really
love
all
the
great
stuff
that
Patrick
and
the
community
and
Microsoft
are
doing
in
the
open
space
open-source
space
in
the
open
source
world
and
a
lot
of
our
staff
here.
Utilize.
B
A
lot
of
front-end
development
framework
technologies,
things
like
react
and
rest
in
JavaScript,
es6
and
typescript,
and
things
of
that
nature,
and
we
just
find
that
that
skill
set
asking
those
same
staff
to
step
over
into
the
world
of
PowerShell
is
sometimes
a
bit
of
a
stretch.
So
engine
is
kind
of
designed
to
allow
those
people
with
the
JavaScript
and
the
es6
background.
The
front-end
development
background
to
use
that
same
skill
set
to
do
configuration
operations.
It
tends
to
make
them
feel
very
comfortable
when
they're
doing
this.
B
So
that
being
said,
I'm
going
to
show
you
how
engineer
works
here,
really
quickly
we're
going
to
jump
into
the
terminal
and
I'll?
Give
you
guys
a
little
bit
of
a
link
some
stuff
here
a
little
bit,
but
to
demonstrate
exactly
what
it
is.
What
you
can
do
with
it
start
by
installing
engineer
in
our
kernel
and
we're
going
to
do
that
using
an
NPM
command,
NPM
install
we're
gonna
use
the
G
flag
to
make
sure
we're
installed
globally
and
we're
gonna
stall.
The
package
called
SP
engineer
now.
B
What
this
is
going
to
do
is
gonna,
take
just
a
few
moments
and
install
engineer
in
our
global
NPM
repository
and
as
soon
as
that's
done.
We
now
have
a
command
called
an
engineer
that
we
can
take
them
to
anywhere
within
our
terminal,
and
that's
going
to
allow
us
to
do
all
sorts
of
things
inside
of
our
projects
that
we're
working
with
in
this
case.
The
first
thing
we're
gonna
want
to
do
is
set
up
a
new
engineer.
B
Project
I,
don't
have
one
yet
work,
so
the
first
thing
I'm
gonna
do
is
just
make
a
directory
will
call
this
feedback
web
part
and
then
we'll
CD
into
that
directory
and
you'll
see.
This
is
an
empty
directory.
There's
nothing
in
here.
To
start
with.
The
first
thing,
I'm
going
to
do
is
do
an
engineer
in
it.
With
that
command
does.
Is
it
creates
two
files
and/or
this
up
individuals
to
code?
So
you
guys
can
take
a
look
at
this
and
you'll
notice
over
here
on
the
left.
B
The
two
files
are
get
ignore,
which
is
basically
just
ignoring
the
environment
file,
because
we
don't
want
to
store
any
sensitive
password
or
authentication
information
in
your
source
control
and
then
the
environment
file
itself.
You
can
actually
have
multiple
environment
files
if
you
decide
to
set
it
up
like
that,
maybe
you
have
a
dip
in
a
stage
and
a
test
in
a
production
environment.
You
can
set
this
up
like
this,
but
by
default,
there's
a
single
environment
file-
and
this
is
basically
just
an
es6
module.
It's
a
JavaScript
file.
B
That's
exporting
some
data
that
we
can
then
use
with
the
engineer
command
when
we
run
those
commands
in
this
directory.
First
and
foremost,
just
press,
the
SharePoint
site,
URL
I
have
actually
have
a
dev
site,
we're
going
to
be
using.
So
let's
go
ahead
and
type
that
in
and
then,
if
we
scroll
down
a
little
bit
here,
we
have
an
affinity
where
you
can
set
the
authentication
method
for
connecting
to
your
SharePoint
site
that
you're
using
by
default.
It
is
username
and
password
I'm
going
to
be
using
SharePoint
Online
on
office
365.
B
So
we're
going
to
just
use
my
email
and
password
here,
but
also
there's
a
link
in
the
comment
here.
You
can
go.
This
uses
a
module
called
node
SP
off,
which
you
can
actually
pass
in
different
types
of
authentication.
So
you
could
use
API
authentication
where
you
have
a
secret
and
a
public
key.
You
can
use
all
sorts
of
different
things
there,
but
those
are
probably
the
two
most
common,
our
username
and
password
and
API
app
method
of
authentication,
I
suppose
so.
B
B
Okay,
so
our
password
saves
into
the
file
there
and
the
first
thing
we're
going
to
do
is
run
engineer
install
now.
What
this
is
going
to
do
is
going
to
install
to
tracking
lists
into
our
target
SharePoint
environment.
If
you
did
have
any
authentication
errors
or
issues
there,
you'd
see
an
error
message
here,
saying:
hey:
we
couldn't
connect
to
the
site.
In
this
case
it
did
work.
You
can
see
it's
gone
going
through
these
six
operations.
Here,
it's
basically
setting
up
two
lists.
B
Now
that
we
have
engineer
installed
were
actually
ready
to
start
utilizing
it
to
make
configuration
changes
now.
The
way
that
that
is
handled
in
engineer
is
through
a
what
we
call
a
migration.
You
can
think
of
a
migration
a
way
to
deploy
a
configuration
change.
Now.
A
configuration
change
could
be
a
whole
bunch
of
things.
B
It
could
be
creating
a
list
adding
a
content,
type
site,
column
or
adding
a
column
to
the
list,
and
it
could
be
a
number
of
things
in
a
single
migration,
but
basically
it's
kind
of
a
isolated
operation
executed
on
a
target
environment
in
and
this
is
actually
a
method.
We
are
borrowing
and
we
very
were
very
heavily
inspired
to
create
engineer
by
a
tool
called
laravel.
B
They
have
this
idea
of
migrations
in
that
laravel,
which
is
an
open
source
people
not
at
all
related
to
sharepoint,
but
they
have
this
really
nice
way
of
managing
database
changes
in
there
and
that's
kind
of
where
the
idea
of
engineer
came
from
is
that,
rather
than
dealing
with
a
database
and
sharepoint
we're
dealing
with
lists
and
in
sight
columns
and
content
types
and
views
and
things
of
that
nature.
But
it's
sort
of
the
same
idea
where
we're
using
migrations
to
actually
control
those
configuration
options.
B
So
you
can
get
started
by
being
a
migration
by
running
engineer
make,
and
then
you
basically
give
the
migration
a
name.
So
let's
go
ahead
and
make
a
really
simple
one.
We'll
call
this
add
feedback
list
in
this
example.
We're
going
to
pretend
that
we're
creating
a
solution
that
maybe
has
a
feedback,
webpart
users
can
submit
feedback
and
give
a
rating
about
your
SharePoint
site
that
they're
currently
looking
at.
So
this
command
is
going
to
go
ahead
and
create
a
file.
B
If
we
switch
back
to
our
Visual
Studio
code,
you'll
see
what
it
did
by
running
that
command
as
it
created
a
migrations
folder
and
inside
of
that
it
created
a
time
stamped
file
that
you
see
ends
with
add
feedback
lists.
The
time
stamp
is
actually
really
important,
because
you
will
find
that
something
a
lot
of
project.
You
may
have
a
migration
that
creates
a
list,
and
then
you
know
a
month
later,
you
may
have
a
developer,
come
in
and
say
hey,
we
need
to
add
a
new
feature
to
that
list.
B
B
So
let's
go
ahead
and
open
this
file.
Let's
take
a
look
at
it
again.
It's
just
an
es6
export
file.
You'll
see
here,
it's
exporting
some
data
and
all
migration
files
are
going
to
consist
of
two
components:
they're
gonna
have
an
UP
method.
What
you
see
here
and
a
down
method,
you
can
kind
of
think
of
those
as
deploy
and
retract.
Basically,
the
up
method
is
going
to
run
when
you're,
fading
or
migrating.
B
This
configuration
and
the
down
method
has
been
a
run
when
you're
rolling
back
the
migration,
so
it's
gonna
undo
whatever
is
done
and
the
up
method,
the
easiest
and
the
simplest
migration
that
we
can
create.
That
is
to
create
a
list
which
actually,
every
time
you
create
a
new
migration.
It's
gonna
kind
of
template,
eyes
it
and
put
in
this
boilerplate.
B
It
just
creates
a
generic
list
called
my
list,
but
in
that
case
again
we're
pretending
that
we're
gonna
create
a
feedback
list.
I'm
gonna,
go
ahead
and
say
engineer,
dot,
web
dot
list,
add
feedback
and
then
down
here,
I'm
gonna,
say:
engineer:
dot,
web
dot
list,
I
get
by
title
feedback,
dot,
delete,
you'll
notice
that
the
format
and
the
sorr
the
API
structure
of
the
methods
you
have
available
in
engineer
very
closely
mimic.
What
you
see
in
p.m.
B
PJs
core
and
the
PNP
libraries
that
the
community
and
Microsoft
has
created,
and
that
is
by
design
we
wanted
to
make
it
familiar.
We
think
it's
a
really
good,
great
way
to
structure
it
and
the
rest
methods
already
kind
of
exists
there.
So
we
wanted
to
kind
of
mimic
that
but
there's
a
whole
bunch
of
methods
that
are
available,
dealing
lists
and
content
types
and
all
that
stuff,
which
we
don't
have
time
to
go
into
all
that,
but
you
guys
can
definitely
check
it
out
on
the
website.
B
There's
lots
of
documentation
there
so
now
that
we
have
this
migration
all
set
up,
we're
all
done
here.
If
we
actually
switch
back
to
our
and
all
we
can
run
engineer
status
and
you
actually
see
it's
going
to
connect
to
the
SharePoint
site
and
make
sure
that
that
in
sort
of
see
what
the
status
is
of
this,
my
gray
ssin
and
it's
gonna-
know
that,
because
that
hasn't
been
deployed
from
it
yeah
add
feedback
list.
B
Migration
is
now
in
a
pending
state
and
if
we
run
the
engineer,
migrated
command,
it's
actually
going
to
take
all
the
pending
migrations
and
in
order
it's
going
to
go
ahead
and
push
those
out
to
the
SharePoint
environment
and
you'll
see
it
actually
ran
the
migration.
It
added
the
feedback
list
to
our
our
site.
Here
we
actually
run
engineer
browse
feedback,
that's
just
gonna,
just
a
kind
of
a
convenience
method
that
comes
with
engineer
to
browse
the
list.
You'll
actually
see.
We
can
open
this
in
the
browser
and
you
see
yes.
B
Indeed,
it
did
create
a
list
on
on
this
SharePoint
environment
called
feedback.
If
we
run
the
engineer,
status
command
again,
you'll
see
that
this
is
now
and
the
migrated
status,
so
it
has
been
migrated.
Now,
let's
do
something
a
little
more
advanced
here
to
show
you
some
of
the
other
features,
but
what
I'm
going
to
do
is
do
we're
gonna,
create
another
migration,
called
add
fields
to
feedback
list
and
again,
let's
open
up
our
visual
studio
code,
you'll
notice
that
it
created
a
second
file
with
the
timestamp.
The
time
stamps
are
actually
UTC
on.
B
So
even
if
you
have
developers
working
in
different
time
zones,
it
should
always
kind
of
make
sure
that
the
order
is
correct
on
those
and
you'll
notice.
It
created
this
second
file
that
we're
now
going
to
add
it,
but
we're
not
going
to
do
a
lift
here.
We're
going
to
do
something
a
little
bit
different,
we're
going
to
get
that
list
that
we
created
in
the
previous
migration
and
we're
go
ahead
and
add
a
couple
of
fields
to
it.
B
So,
let's
delete
this
part
of
our
up
method
and,
let's
say
engineer,
got
web
dot
list,
I
get
title
and
then
we're
gonna
get
the
feedback
list,
then
we're
gonna
say
dot,
fields,
dot,
add
or
I
get
the
field
collection
and
we're
gonna
add
a
new
field
to
that
list.
Now
this
is
the
more
typical
way
that
you're
gonna
use
engineer
is
actually
you
know
previously.
We
did
kind
of
a
shortcut
or
the
simple
version
where
we
just
created
a
list
and
we
passed
in
a
string
but
usually
wearing
access.
B
The
methods
in
engineer,
you're,
going
to
use
the
JavaScript
object,
notation,
which
allows
you
to
give
all
kinds
of
options
for
the
type
of
objects,
you're,
updating
or
creating
or
working
with.
So,
for
example,
we
can
specify
type
as
multi-line
text
where
I
create
a
multi-line
text
field
with
a
title
of
feedback
comments-
and
you
can
add
things
like
description.
You
know,
add
some
comments
whatever
it
may
be,
you
could
add
a
number
of
lines,
and
these
are
a
lot
of
the
different
things
that
you
have
available
in
the
the
rest
API.
B
So
you
can
have
all
kinds
of
options
that
you
can
pass
in
when
you're
creating
these
things,
for
example,
append
only
if
you
wanted
to
create
that
you
could
pass
in
true
in
this
case
we're
going
to
do
that,
but
lots
of
different
options
when
you're
creating
a
particular
field
and
again,
all
that's
documented
on
the
documentation.
So
you
guys
can
check
that
out.
I
always
make
sure
that
you
undo
an
operation,
because
we
again
we
have
both
the
up
and
the
down
method
here.
B
And
then
that's
going
to
make
sure
it
selects
that
field.
If
there's
this
migration
is
being
rolled
back
and
it's
going
to
delete
from
the
feedback
list
now,
let's
say
add
one
more
field
here,
just
to
show
you
I'm
going
to
duplicate
this
really
quick.
We're
gonna,
also
add
this
to
the
feedback
loop.
So,
let's
create
a
field.
B
So
there
are
some
cases
where
we
Ferengi
ate
it
a
little
bit
from
the
speck
of
the
rest,
API
and
choice.
Voice
fields
are
one
of
them
because
we
just
thought
it
would
be
so
much
simpler
if
you
just
very
simply
pass
an
array
of
choices
as
strains
here.
So
there's
a
couple
examples
where
we
have
deviated
and
really
we
only
did
that
we
were
very
thoughtful
about
when
we
chose
to
deviate
from
that,
but
we
only
did
that
when
we
felt
like
Bert
is
making
the
API
easier
to
understand
and
more
convenient.
B
Okay,
so
we
have
two
fields
and
again
we
want
to
make
sure
that
we
also
delete
the
stars,
feedback
stars
thing
and
the
down
method,
and
that's
it.
That's
the
end
of
this
migration
so
again
we're
just
adding
two
fields
to
that
list.
Let's
go
ahead
and
switch
back
here
and
if
we
run
the
engineer
status,
you'll
know
you'll
notice.
We
now
have
two
migrations.
The
second
one
is
now
pending.
B
So
if
we
were
to
run
engineer,
migrate,
they're
actually
gonna
run
those
two
operations
inside
of
that
file,
which
are
add,
field
feedback,
comments
to
feedback
and
feedback
stars
to
feedback,
and
if
we
switch
back
to
our
browser
here,
you'll
notice
we
refresh
and
then
click
on
new
item.
Yes,
indeed,
you
have
a
feedback
comments
field,
any
feedback
stars
where
you
can
choose
a
rating,
so
that
was
pushed
out
here.
The
cool
thing
about
this
and
really
the
way
it
was
really
designed
to
be
used.
B
Is
that
these
migrations,
if
we
were
to
check
them
into
source
control
and
now
be
made
available
to
several
different
driven,
develop
and
all
they
would
have
to
do
if
they're,
all
working
in
different
development
environments
is
if
they
needed
to
get
the
latest
configuration
changes
that
are
gonna
support,
the
new
code,
the
front-end
code
and
the
JavaScript
that's
running
a
web
part
for
example.
In
this
case,
a
feedback
part
all
developed
would
have
to
do
was
pull
changes
from
source
control.
B
It's
gonna
pull
in
this
these
migrations,
and
then
they
just
run
an
engineer,
migrate
command
and
it's
gonna
deploy
the
latest
chain
to
their
environment.
So
that's
kind
of
the
whole
idea
behind
this
is
that,
because
these
configurations
are
being
captured
in
these,
these
files
effect
into
your
project,
along
with
your
other
front-end
assets,
you
can
now
start
deploying
them
to
multiple
environments
and
sharing
them
across
a
team
which
is
a
great
way
to
kind
of
manage,
because
everybody's
keeping
up
to
date,
you
don't
have
to
ever
manually.
B
B
So
you
see
in
this
case
it
deleted
the
two
fields
and
then
it
deleted
the
list
and
if
we
were
to
run
engineer,
browse
feedback
free
back,
you'll
notice
that
obviously
it's
gonna
be
page
not
found,
because
that
list
has
now
been
removed
and
then
very
quickly.
You
know
again
engineer
migrate.
It's
just
in
a
few
moments.
It's
gonna
go
in
order
and
in
chronological
order
and
deploy
all
of
those,
even
if
you
50
different
it'll,
just
quickly
run
through
those
deploy
them
all
at
once.
You
could
then
deploy
them
to
a
staging
environment.
B
You
know
with
a
different
command.
You
can
switch
environment
files
on
the
fly
with
just
a
couple
commands
and
deploy
all
these
to
all
those
environments
and
keep
everything
up
to
date.
So,
hopefully
that
gives
you
guys
a
good
idea
of
how
engineer
works.
It's
a
quick
introduction.
I
do
encourage
you
guys
to
check
out
the
website
which
is
sp,
engineer
org.
You
can
learn
lots
more.
It
is
an
open
source
project,
so
you
can
check
out
the
source
code.
There's
a
lot
of
things.
B
We'd
love
to
do
with
this,
such
as
working
with
taxonomy,
working
with
navigation,
there's
lots
of
cool
things,
I
think
there's
an
opportunity
to
to
plug
into
here,
but
for
now
definitely
check
out
the
migrations
API.
These
are
all
the
things
you
could
work
with
everything
from
content,
types
to
list
view
and
webs
and
think
that
nature.
So
we
showed
you
a
couple
of
real,
simple
examples,
but
also
one
of
the
things
that
Engineer
does
is,
for
example,
with
content
types.
Admittedly,
the
REST,
API
and
SharePoint
has
some
limitations.
B
When
it
comes
to
content
types,
for
example,
you
can't
really
pass
in
an
ID
when
you're
creating
a
content
type,
it
kind
of
generates
a
random
one.
Every
time
you
create
one
in
the
REST
API,
and
that
could
be
an
issue
because
then
you
have
different
content
type
IDs
for
that
content
type
across
multiple
environments.
So
there
are
some
issues
with
that:
REST
API.
B
And
what
we
do
in
engineer
is
we
actually
switch
automatically
between
the
REST,
API
and
sison,
because
there's
some
things
that
you
can
do
and
see
some
that
work
better
in
sison
than
they
do
in
the
REST
API
so
and
if
you've
ever
had
to
work
with
C
Sam.
You
probably
want
to
shoot
yourself
in
the
foot,
because
it's
pretty
awful
to
work
with,
at
least
in
my
opinion,
so
we're
kind
of
doing
some
of
that
work
for
you
and
we're
just
kind
of
putting
this
abstraction
layer
over
it.
B
So
that
word,
work
of
making
sure
C
some
works
and
making
sure
rest
works,
but
developers
are
just
interacting
with
this
consistent
API
works
this
which
method
you're
utilizing.
So
that's
kind
of
the
whole
idea
behind
it,
but
again
we'd
love
to
see
other
contributors
jump
into
the
project
and
help
us
kind
of
improve
the
functionality
here.
I
think
there's
a
lot
of
opportunity
to
make
this
a
really
cool
thing,
but
definitely
check
it
out
again.
A
Fantastic
I'll
thanks
so
much
a
really
interesting
tool.
It's
it's
really
great
to
see
what
folks
out
there
in
the
community
or
building-
and
this
is
just
another
fantastic
things
thing
for
folks
to
look
at
and
put
in
their
tool
belt,
alongside
all
the
other
capabilities
that
exist
out
there
in
the
SharePoint
ecosystem,
SharePoint
dev
ecosystems
so
definitely
check
this
out
and
I
want
a
big
thanks
to
Kyle
for
being
willing
to
jump
back
on.
We
record
this
after
our
little
recording
snafu
on
Thursday.
A
So
thanks
Kyle
really
appreciate
it
and
now
back
to
our
regularly
scheduled,
recording
wonderful
demo
by
Kyle,
really
appreciate
it
so
similar
to
the
PowerShell
similar
to
the
office.
Cli
office
uses
five
CLI,
but
then
different
and
taking
again
a
different
approach.
So
I
think
it's
always
valuable
to
see
these
different
approaches
so
moving
into
our
second
demo,
we've
got
Louise,
who
has
a
field
customizer
sample
using
the
text
analytics
API.
So
this
is
another
really
cool
sample
Louise.
If
you
are
hi
guys.
C
Okay,
cool
just
a
very
quick
about
Me
section,
so
I'm
Louise
I'm,
an
office
Deb
MVP
working
for
a
london-based
company
called
your
people
as
a
cloud
architect
and
well.
You
can
ping
me
on
Twitter
github
wherever
and
feel
free
to
ping
me
if
you
like.
So
let's
take
a
quick
look
to
the
demo.
So
what
we've
got
here
is
custom
field
customizer
SPF,
XP
customizer.
So
what
we
are
doing
is
rendering
this
sentiment
icon
based
on
the
content
in
the
in
the
title
field.
So
what
we
are
using
here
is
the
testimony
pits
API.
C
This
is
an
API
coming
from
the
cognitive
services.
So,
as
you
can
see
here,
this
is
the
official
documentation,
so
you
can
analyze
a
text
using
the
API
and
you
can
get
the
different
languages
in
the
in
the
tears,
the
keywords
and
the
sentiment,
the
sentiment,
the
score.
This
is
just
a
number
telling
you
how
positive
or
negative
is
there
is
the
text
so
coming
back
into
the
list
just
like
so
here
we
have.
The
first
item,
so
is
very
happy
face,
of
course,
because
will
love
SharePoint
just
try
to
do
the
same
in
Spanish.
C
So
yes,
a
and
exactly
the
same
will
love
sir
point,
and
in
this
case
we
are
having
happy
face
as
well,
but
it's
not
as
happiest
as
in
English
and
well
I.
Guess,
that's
gonna,
be
because
most
of
the
serve
point,
projects
and
penis
plane
are
still
fun
solutions.
Nevermind,
let's
try
something
similar,
but
with
very
bad
comment.
So
I
found
this
interesting
Kiki
toy
in
in
Amazon
and
surprisingly,
not
everybody
seems
happy
with
with
this
toy.
C
C
Let's
see
what
happened:
yeah
boom
very
angry
face.
Surprisingly:
okay,
that's
how
it
works
so
before
having
a
look
to
them
to
the
code.
I
would
like
to
explain
first
how
we
can
query
the
test
analytics
API
in
order
to
use
the
API
you're
gonna
first
register
the
service
in
either
individual
tenon.
So
here
we
are
in
the
cognitive
services
section,
so
we
can
create
a
new
service.
C
You
have
to
fill
the
form
and
see
how
there's
an
API
type,
because
cognitive
services
are
offering
a
bunch
of
different
API
is
related
with
artificially
intelligent,
matcha,
green
and
so
on.
So
here
you
have
to
select
in
this
case
we
are
using
the
test
analytics
API
and
some
time
ago,
I
did
another
vemma.
So
in
the
vision,
API,
so
yeah
you
just
feel
and
click
rate,
and
once
it's
created,
you
can
get
the
API
and
use
it
later.
C
So
if
we
take
a
look
to
this
official
website,
the
test
analytics
API
offers
you
three
different
end
points,
so
you
can
get
the
language
from
chromatics.
Obviously,
you
can
get
the
sentiment
and
also
the
different
tables
of
the
test,
and
you
can
do
a
post
request
to
the
API,
so
the
body
of
the
request.
It
looks
like
this
one
there's
a
document
section,
so
you
can
post
different.
What
is
called
documents
on
here
is
like
different
tests
that
you
can
sell
with
a
specific
ID
and
then
to
the
languages
endpoint.
C
In
this
case,
you
are
getting
the
response
on
here.
So
it's
saying:
okay,
this
document
with
the
ID
one
has
these
different
affected
languages
and
for
each
language
also
the
ISO
name
and
the
score,
and
this
is
how
sure
the
system
is
that
the
language
is
English
in
this
case
pretty
much
the
same
with
the
sentiment
endpoint.
C
As
you
can
see,
also
keep
in
mind
that
you
can
send
more
than
1,000
documents
in
the
same
request,
so
only
only
only
that
1,000
documents
in
in
the
same
request,
and
also
be
careful
with
the
number
of
course
that
you
are
doing
to
the
to
the
API
cause.
If
you
are
calling
very
fast,
the
API,
you
can
get
four
to
nine
too
many
requests
or
more
as
well.
C
So
if
you
call
the
sentiment
endpoint,
what
we
are
getting
in
the
response
is
again
all
these
documents
that
you
send
before
with
the
ID
that
you
pass
to
the
API
the
score
about
how
positive
or
negative
is
there
is.
The
comment
is
the
text
so,
let's
jump
into
the
cow.
So
what
we
have
is
a
few
customizer
here.
C
So
every
time
the
Phillies
is
render
I'm
getting
the
text
from
the
title
fail
and
also
the
idea,
although
I'm
not
using
this
beside
a
later,
and
so
you
have
and
well
in
the
event,
object
that
you
are
getting
from
the
SPF
X
framework.
You
can
call
the
list
item,
get
value
by
name
and
send
the
film
of
them
of
the
list
that
you
want
to
get
to
get
the
value.
C
In
this
case
the
fear,
the
title
field
name
is
set
as
a
property
in
the
same
SPF
extensions,
and
we
can
configure
it
later
and
change
from
title
to
any
other
field
that
we
want
to
analyze.
And
after
that
we
just
create
the
main
component.
We
have
component
sentiment
analytics
and
we
are
sending
the
tags
that
we
want
to
analyze
the
HTTP
client
as
well
from
this
VFX
content
to
do
the
different
post
requests
to
the
API
and
the
API
key.
C
That,
in
this
case,
is
common
as
well
from
the
properties
in
my
previous
demo,
with
the
vision,
API
I
configure
the
the
API
as
part
of
the
payment
properties.
However,
there's
currently
an
issue
with
get
API
in
the
tenon
property.
So
if
you
are
running
the
query,
with
an
external
user
is
not
gonna
work,
you're
gonna
get
an
authorized
exception.
C
They
so
is
actually
locked
in
in
the
fab
and
should
be
fixed,
probably
doing
this
month
or
or
the
next
one.
According
to
to
vessel
to
basis
comment,
but
in
the
meantime,
in
this
case
we
are
providing
the
API
key
of
the
properties
in
the
future.
So
if
we
take
a
look
to
the
serf
JSON
file,
you
can
see
we
are
the
configuration
of
the
field
customizer.
This
is
the
field
on
the
list
that
we
are
rendering,
and
here
you
can
see
the
API
key
and
also
the
name
of
the
of
the
field.
C
So,
jumping
now
to
the
main
we
have
component
so
here
this
is
the
base
URL
to
first
indicate
sentiment
fund,
and
if
answer,
we
are
out
of
detecting
the
language
based
on
the
test,
so
we
are
doing
a
post
to
the
languages
endpoint
and
in
the
body
of
the
request.
This
HTTP
option
is
from
this
function,
so
we
are
saying
as
you've
seen
in
the
in
the
previous
way
from
Microsoft
the
different
documents
with
a
specific
ID.
C
C
Content
type
and
so
on.
So
when
we
have
the
language
and
the
language
is
coming
here
when
we
are
just
submitting
one
document,
so
we
are
getting
the
response
in
the
in
the
first
document
the
detected
languages.
We
are
also
getting
the
first
one,
keep
in
mind
that
if
you
have
different
languages
in
the
same
text,
you're
gonna
get
on
a
ride
with
the
different
detected
languages
and
for
each
language,
there's
a
property
ISO
name
that
is
a
like
and
for
English
as
for
Spanish
and
so
on.
C
So
once
we
get
the
language
we
are
just
calling
and
you
post
request
to
the
sentiment,
endpoint
and
again
configure
in
the
body
request,
but
in
this
specifying
the
languages
well
under
different
vendors
and
so
on,
and
in
this
case
again
we
are
just
sending
one
document.
So
in
document
0.8
score,
we
are
getting
the
number.
This
is
a
number
between
c1
and
1,
with
the
sentiment
and.
C
When
they
get
sentiment,
fancy
on
this
is
an
assign
function.
As
you
can
see,
we
are
using
the
async
and
await
keywords
and
Athiya
and
when
the
promise
is
right-
or
we
are
just
updating
the
reactor
state-
that
we
are
component
a
state
with
a
specific
score-
and
that
means
that
this
sentiment,
icon
component
is
gonna
refresh
and
let's
take
a
quick
look
to
the
sentiment
icon.
C
So
this
is
just
what
is
calling
reactor
dam
component
because
we
are
get
the
score
from
the
properties
in
the
component,
so
we
are
just
translating
this
0
0
or
1
value
in
a
specific
icon,
and
obviously
this
is
completely
up
to
you.
If
you
want
to
consider
a
happy
face
with
everything
that
is
over
20
or
whatever
is
completely
up
to
you.
So
finally,
the
sentiment
icon
is
render
and
we
are
getting
the
result
in
the
screen,
as
we
saw
and
just
to
show
you,
the
different
networks
network
places
this
reference.
C
You
can
get
the
rest
part
so
here
for
this
document,
the
different
affected
languages
with
the
English
code
and
so
on
so
I
think
that's
everything
from
from
this
beam,
oh
yeah,
I'm
gonna
be
available
in
the
chat
window
and
I'm
gonna
review.
Now,
if
there's
any
question
feel
free
to
ping
me
lay
down
with
a
great.
A
D
D
65
specialist
and
his
development,
VP
and
I'm
based
in
Montreal
Canada,
so
today,
I,
will
show
you
a
quick
example
that
I've
made
a
few
weeks
ago
about
the
integration
of
dots
in
shopping
portal.
So
using
the
notification
with
ms
L,
which
is
the
authentication
library
for
JavaScript,
and
so
I
will
present
you
the
first
of
all
the
end
user
experience.
So
here,
I
have
a
communication
site
with
a
chat
went
online.
As
you
can
see,
the
integration
is
done
as
fix
extension
of
an
application,
customizer
type.
D
So
when
I
click
here,
the
first
thing
is
the
looking
pop-up.
So
I
have
two
seen
to
be
in
the
application.
So
behind
the
scene
we
use
the
OAuth
2
implicit
flow,
so
I'm
already
connected.
So
what
I
have
to
do
here
just
to
get
within
the
already
and
then
so
so
next
conversation
started
with
the
bus
and
he
recognized
me
and
I
can
types
on
some
question.
For
example,
who
is.
D
A
D
D
Basically,
the
you
scale
of
this
kind
of
solution
is
to
provide
a
kind
of
a
sense
assistant
in
your
bottle
to
answer
some
basic
questions
or
automate
some
some
basic
basic
engine
with
India
within
your
bottle.
So
what
are
the
building
blocks
of
this
solution?
So,
first
of
all,
you
will
need
to
register
another
at
the
application,
so
in
this
sample,
I
use
the
MSL,
so
the
Microsoft
on
occasion,
library,
targeting
the
algebra
DV
to
this
central
works
with
Adele
dodge
yes,
as
well,
so
targeting
the
v1.
D
D
So
if
you
think
to
come
in
here,
first
of
all,
so
it's
in
French
but
I
hope
you
understand,
you
understand,
you
have
to
check
to
add
a
new
platform,
the
web
platform
and
check
the
implicit
flow,
because
the
solution
is
been
a
place
like
I
said
on
the
robot
to
flow
also
about
the
reply.
Url,
a
very
important
point
is
to
here
the
site
collection
would
URL.
Why?
Because
in
a
zoo,
a
TV,
you
don't
have
the
wild
card
character.
D
So
it
means
that
if
you
integrate
your
part
within
a
web
part,
for
instance
in
the
radio
act
URL,
you
will
have
to
add
each
page
where
well,
as
reply
URL,
to
be
able
to
get
this
solution
work.
So
that's
why
I
use
an
extension,
because
the
exception
is
present
in
every
page,
so
I
can
use
a
single
reply.
You
go
well,
so
this
is
the
first
step.
Next
one
you
will
have
to
use
a
Louis
model.
D
So
basically,
what
we
do
here
is
to
match
some
intense
with
some
graph
queries
very
simple
concept,
so
this
is
obviously
this
is
a
very,
very
simple
example
in,
but
in
real
life
you
may
want
to
use
more
complex
intents
to
automate
some
action
or
get
more
complex
data.
So
here
I
have
I,
get
my
manager
or
get
my
group.
So
just
provides
me
elevenses
and
you
could
good
so
next,
one
after
the
Louis
model
is
set,
you
will
have
to
create
a
new
but
application,
so
we
teenager.
So
here
you
have
two
choices.
D
So
here,
when
you
create
robots,
you
can
just
upload
the
code
or
set
the
code
for
convenience.
If
you
want
to
use
this
sample,
just
open
the
card
in
the
online
editor
and
paste
it
directly
in
the
app
dot.
Yes,
maybe
in
a
real-life
situation
in
prediction
Mon,
you
may
want
to
like
each
other
integration
or
git
integration
to
go
to
make
sure
your
deployments.
So
so
the
pod
code
is
implemented
here
directly
in
the
in
the
editor.
D
D
D
Okay,
the
last
part
of
the
solution
is
to
store
the
configuration
value
for
us,
perfect
extension
in
this
solution.
I
use
global
configuration
so,
instead
of
creating
variables
directly
in
the
code,
I
used.
The
chiffon
tonight
turn
on
properties.
So
to
do
this,
I
used
the
PMP
common
Nets,
so
the
strange
entity
command
net,
so
just
put
your
audio
information
here
and
they
will
be
richly
automatically
in
the
SPF
extension.
So,
as
you
can
see,
if
I
switch
back
now
to
the
to
the
code,
the
first
thing
I
do
is
to
get
those.
D
The
code
is
quite
simple:
you
just
have
to
to
call
the
logging
proper
to
trigger
the
authentication
process
and
then
get
the
assist
the
access
token.
Then
the
access
token
is
sent
to
the
bot
using
the
package
Channel.
The
back
channel
is
a
way
to
exchange
information
between
your
client
side
code
and
your
BOTS
it
about
code
so
and
the
assignment
without
the
users,
so
you
I
send
token
via
the
back
channel
to
the
bot.
So
this
is
an
event
at
an
even
type,
a
special,
even
type.
D
So
when
the
user
is
authenticated,
I
send
the
user
again
to
the
body
of
the
back
channel.
So
if
I
go
back
to
the
to
the
bot
code
without
the
Associated
event,
yeah,
so
I
get
the
access
token
and
I
store
it
inside
the
storage
context
of
the
bot.
So
to
do
this,
you
have
multiple
options
so
in
this
sample,
I
just
used
the
memory
board
storage,
which
is
a
temporary
storage
for
test
for
test
purpose.
D
But
in
a
real
life
situation
you
may
want
to
use
an
azure
table,
cosmos
DVR
other,
to
implement
your
storage,
your
storage,
so
once
I
stored
the
access
token
in
the
special
private
conversation
data,
probably
I
will
be
able
to
use
it
directly
in
dialogues
in
the
session
object.
So
if
you
set
up
your
gel,
your
data
is
within
the
bot
you
can
in
the
session,
object,
gets
your
private
cash
compensation
data
and
the
access
token,
and
when
you
have
the
access
token
you
you
will
be
able
to
to
make
graph
queries.
D
According
the
current
permission,
I
didn't
talk
about
permission,
but
in
a
Java
TV
you
don't
have
to
setup
your
authorization
in
the
app
you
can
set
your
permission
directly
in
your
code
and
dynamically
I
will
show
you.
So
let's
say
I
want
to
make
some
basic
queries
that
we
have
to
set
up
some
scopes,
which
we
call
scoops.
So
it
does
define
yes,
so
in
the
in
December
I,
just
I
just
need
the
directory
with
all
end-user
with
permission,
so
I
can
just
specify
it.
D
Yes,
depending
of
your
query,
the
query
you
want
to
make
you
have
to
to
get
the
right
scopes,
so
you
can
get
get
these
values
directly
in
the
grant
documentation.
So
very
simple,
so
I
get
the
access
token
and
I
I.
Do
the
query
and
send
back
the
result.
Just
note
is
that
the
real
logging
process
is
not
done
directly
in
the
bots,
but
in
the
client-side
part.
So
this
is
up
to
the
NSL
library
to
get
to
ensure
the
user
as
sorry
as
the
right
access
token.
D
So,
every
time
the
web
chat,
sorry,
the
web
chat
window
is
open.
The
access
token
is
sent
all
is
always
sent
to
the
bot,
so
that
is
where
I
have
a
fresh
turkey
and
every
time,
okay,
okay.
So
the
last
part
of
this
solution
is
the
conversation
story.
As
you
can
see,
when
I
click
back
to
the
botton
microinstruction
is
is
retrieved.
My
previous
conversation
is
between
to
do
this.
I
just
stored.
D
The
conversation
ID
within
the
local
storage,
so
in
this
solution,
I
get
I
had
a
special
event
under
blood
connection,
saying
when
the
bot
is
online
so
where
the
bots
is
online,
I
can
get
the
conversation
ID
and
stories
in
the
local,
so
I.
Look
at
storage
thanks
to
the
the
PNP
is
GS
library.
So,
by
this
way,
I'm
able
to
reach
weave
I'm
able
to
reach
weave
the
conversation
ID
and
if
I
inspect
the
local
storage,
you
can
see
the
comment
session
yeah.
Why
do
you
lock?
Your
storage
is
set
up
a
session
storage?
D
It's
because
if
you
use
this
essential
session
storage
and
if
open
another
tab,
your
conversation
led
will
be
lost.
We
lost
your
conversation.
So
that's
why
I
use
the
dealer
case
storage,
so
it
was
quick,
but
I,
think
I
explained
the
old
concept
so
feel
free
to
use
the
this
solution.
This
is
a
very
basic
example,
so
you
can
you
can
improve
it
in
your
own
requirements
and
feel
free
to
ask
your
question
if
you
are
so.
Thank
you.
A
It
has
a
really
great
presentation,
Frank
really
another
super
interesting
topics.
If
you
haven't
looked
at
the
bot
framework.
This
is
a
really
cool
example
of
using
that
within
SharePoint
as
an
extension.
So
it's
something
I
hadn't
seen
before
and
another
very
cool
sample.
That's
out
there
will
link
to
that
from
the
post
when
we
get
this
up
for
the
recording,
don't
have
time
today
for
the
Q&A,
we
actually
went
a
little
bit
long,
which
is
fantastic,
really
valuable
to
see
all
those
demos.
A
Our
next
meeting
is
going
to
be
February
1st
for
this
special
interest
group.
Our
next
general
sharepoint
development,
special
interest
group
will
be
only
25th
of
January,
that's
next
Thursday
and
until
then
I
hope
everybody
has
a
great
weekend
look
forward
to
talking
to
everybody
soon.
Thank
you
all
for
your
time.
Take
care.