· 6 years ago · Sep 10, 2019, 01:20 PM
1const OrdersIntentHandler = {
2 // Triggers when user wants to look up orders
3 canHandle(handlerInput) {
4 return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
5 && Alexa.getIntentName(handlerInput.requestEnvelope) === 'OrdersIntent';
6 },
7 async handle(handlerInput) {
8 // Get user inputs and declare the Alpaca object
9 const slots = handlerInput.requestEnvelope.request.intent.slots;
10 const api = new Alpaca({
11 keyId: keyId,
12 secretKey: secretKey,
13 paper: true
14 });
15
16 // Lookup orders using Alpaca trade API and craft a response
17 let resp = await api.getOrders().then((orders) => {
18 if(orders.length > 0) {
19 var speakOutput = "Listing open orders. ";
20 orders.forEach((order,i) => {
21 let sym = order.symbol.split("").join(", ");
22 speakOutput += `Order ${i + 1}: ${sym}, ${order.qty}, ${order.type} order, ${order.side}, ${order.filled_qty} shares filled. `;
23 });
24 return speakOutput;
25 }
26 else {
27 return "No open orders.";
28 }
29 }).catch((err) => {
30 return `Error: ${err.error.message}`;
31 }).then((resp) => {
32 // Send verbal response back to user
33 return handlerInput.responseBuilder
34 .speak(resp)
35 .getResponse();
36 });
37
38 return resp;
39 }
40};