@@ -50,35 +50,69 @@ def filters(self, status='pending', **kwargs):
5050
5151 def dispatch (self , request ):
5252 # type: (Fulfillment) -> str
53+
54+ conversation = request .get_conversation (self .config )
55+
5356 try :
5457 if self .config .products \
5558 and request .asset .product .id not in self .config .products :
5659 return 'Invalid product'
5760
5861 logger .info ('Start request process / ID request - {}' .format (request .id ))
59- result = self .process_request (request )
62+ process_result = self .process_request (request )
6063
61- if not result :
64+ if not process_result :
6265 logger .info ('Method `process_request` did not return result' )
6366 return ''
6467
65- params = {}
66- if isinstance (result , ActivationTileResponse ):
67- params = {'activation_tile' : result .tile }
68- elif isinstance (result , ActivationTemplateResponse ):
69- params = {'template_id' : result .template_id }
70-
71- return self .approve (request .id , params )
68+ if isinstance (process_result , ActivationTileResponse ):
69+ message = 'Activated using custom activation tile.'
70+ approved = self .approve (request .id , {'activation_tile' : process_result .tile })
71+ elif isinstance (process_result , ActivationTemplateResponse ):
72+ message = 'Activated using template {}.' .format (process_result .template_id )
73+ approved = self .approve (request .id , {'template_id' : process_result .template_id })
74+ else :
75+ # We should not get here
76+ message = ''
77+ approved = ''
78+
79+ if conversation :
80+ try :
81+ conversation .add_message (message )
82+ except TypeError as ex :
83+ logger .error ('Error updating conversation for request {}: {}'
84+ .format (request .id , ex ))
85+ return approved
7286
7387 except InquireRequest as inquire :
7488 self .update_parameters (request .id , inquire .params )
75- return self .inquire (request .id )
89+ inquired = self .inquire (request .id )
90+ try :
91+ conversation .add_message (str (inquire ))
92+ except TypeError as ex :
93+ logger .error ('Error updating conversation for request {}: {}'
94+ .format (request .id , ex ))
95+ return inquired
7696
7797 except FailRequest as fail :
78- return self .fail (request .id , reason = str (fail ))
98+ # PyCharm incorrectly detects unreachable code here, so disable
99+ # noinspection PyUnreachableCode
100+ failed = self .fail (request .id , reason = str (fail ))
101+ try :
102+ conversation .add_message (str (fail ))
103+ except TypeError as ex :
104+ logger .error ('Error updating conversation for request {}: {}'
105+ .format (request .id , ex ))
106+ return failed
79107
80108 except SkipRequest as skip :
81- return skip .code
109+ skipped = skip .code
110+ try :
111+ conversation .add_message (str (skip ))
112+ except TypeError as ex :
113+ logger .error ('Error updating conversation for request {}: {}'
114+ .format (request .id , ex ))
115+ return skipped
82116
83117 @deprecated (deprecated_in = '16.0' , details = 'Use ``TierConfig.get`` instead.' )
84118 def get_tier_config (self , tier_id , product_id ):
0 commit comments