1212using CalendarSkill . Services ;
1313using CalendarSkill . Utilities ;
1414using Luis ;
15+ using Microsoft . AspNetCore . Mvc ;
1516using Microsoft . Bot . Builder ;
1617using Microsoft . Bot . Builder . AI . Luis ;
1718using Microsoft . Bot . Builder . Dialogs ;
@@ -34,6 +35,8 @@ namespace CalendarSkill.Dialogs
3435{
3536 public class CalendarSkillDialogBase : ComponentDialog
3637 {
38+ protected const string APITokenKey = "APITokenKey" ;
39+
3740 private ConversationState _conversationState ;
3841
3942 public CalendarSkillDialogBase (
@@ -125,7 +128,15 @@ protected async Task<DialogTurnResult> GetAuthToken(WaterfallStepContext sc, Can
125128 if ( sc . Result is ProviderTokenResponse providerTokenResponse )
126129 {
127130 var state = await Accessor . GetAsync ( sc . Context ) ;
128- state . APIToken = providerTokenResponse . TokenResponse . Token ;
131+
132+ if ( sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) )
133+ {
134+ sc . Context . TurnState [ APITokenKey ] = providerTokenResponse . TokenResponse . Token ;
135+ }
136+ else
137+ {
138+ sc . Context . TurnState . Add ( APITokenKey , providerTokenResponse . TokenResponse . Token ) ;
139+ }
129140
130141 var provider = providerTokenResponse . AuthenticationProvider ;
131142
@@ -162,7 +173,8 @@ protected async Task<DialogTurnResult> GetAuthToken(WaterfallStepContext sc, Can
162173 try
163174 {
164175 var state = await Accessor . GetAsync ( sc . Context ) ;
165- var calendarService = ServiceManager . InitCalendarService ( state . APIToken , state . EventSource ) ;
176+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
177+ var calendarService = ServiceManager . InitCalendarService ( ( string ) token , state . EventSource ) ;
166178
167179 // search by time without cancelled meeting
168180 if ( ! state . ShowMeetingInfor . ShowingMeetings . Any ( ) )
@@ -791,8 +803,8 @@ protected List<EventModel> GetFilteredEvents(CalendarSkillState state, string us
791803 protected async Task < string > GetMyPhotoUrlAsync ( ITurnContext context )
792804 {
793805 var state = await Accessor . GetAsync ( context ) ;
794- var token = state . APIToken ;
795- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
806+ context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
807+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
796808
797809 PersonModel me = null ;
798810
@@ -817,8 +829,8 @@ protected async Task<string> GetMyPhotoUrlAsync(ITurnContext context)
817829 protected async Task < string > GetUserPhotoUrlAsync ( ITurnContext context , EventModel . Attendee attendee )
818830 {
819831 var state = await Accessor . GetAsync ( context ) ;
820- var token = state . APIToken ;
821- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
832+ context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
833+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
822834 var displayName = attendee . DisplayName ?? attendee . Address ;
823835
824836 try
@@ -1497,8 +1509,8 @@ protected async Task<List<PersonModel>> GetContactsAsync(WaterfallStepContext sc
14971509 {
14981510 var result = new List < PersonModel > ( ) ;
14991511 var state = await Accessor . GetAsync ( sc . Context ) ;
1500- var token = state . APIToken ;
1501- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1512+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1513+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15021514
15031515 // Get users.
15041516 result = await service . GetContactsAsync ( name ) ;
@@ -1509,8 +1521,8 @@ protected async Task<List<PersonModel>> GetPeopleWorkWithAsync(WaterfallStepCont
15091521 {
15101522 var result = new List < PersonModel > ( ) ;
15111523 var state = await Accessor . GetAsync ( sc . Context ) ;
1512- var token = state . APIToken ;
1513- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1524+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1525+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15141526
15151527 // Get users.
15161528 result = await service . GetPeopleAsync ( name ) ;
@@ -1522,8 +1534,8 @@ protected async Task<List<PersonModel>> GetUserAsync(WaterfallStepContext sc, st
15221534 {
15231535 var result = new List < PersonModel > ( ) ;
15241536 var state = await Accessor . GetAsync ( sc . Context ) ;
1525- var token = state . APIToken ;
1526- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1537+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1538+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15271539
15281540 // Get users.
15291541 result = await service . GetUserAsync ( name ) ;
@@ -1534,24 +1546,24 @@ protected async Task<List<PersonModel>> GetUserAsync(WaterfallStepContext sc, st
15341546 protected async Task < PersonModel > GetMyManager ( WaterfallStepContext sc )
15351547 {
15361548 var state = await Accessor . GetAsync ( sc . Context ) ;
1537- var token = state . APIToken ;
1538- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1549+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1550+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15391551 return await service . GetMyManagerAsync ( ) ;
15401552 }
15411553
15421554 protected async Task < PersonModel > GetManager ( WaterfallStepContext sc , string name )
15431555 {
15441556 var state = await Accessor . GetAsync ( sc . Context ) ;
1545- var token = state . APIToken ;
1546- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1557+ sc . Context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1558+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15471559 return await service . GetManagerAsync ( name ) ;
15481560 }
15491561
15501562 protected async Task < PersonModel > GetMe ( ITurnContext context )
15511563 {
15521564 var state = await Accessor . GetAsync ( context ) ;
1553- var token = state . APIToken ;
1554- var service = ServiceManager . InitUserService ( token , state . EventSource ) ;
1565+ context . TurnState . TryGetValue ( APITokenKey , out var token ) ;
1566+ var service = ServiceManager . InitUserService ( ( string ) token , state . EventSource ) ;
15551567 return await service . GetMeAsync ( ) ;
15561568 }
15571569
0 commit comments