2017-01-17 2 views
1

Ich möchte den Aktienkurs von jedem Artikel erhalten. Ich habe eine Funktion getPrice, die den Preis des Artikels zurückgibt. Ich versuche, wit ai zu verwenden. Das habe ich ausprobiert.Calling Action-Funktion mit API in Python

from wit import Wit 

def getPrice(request): 
    #statements 
    return price 


def send(request, response): 
    print request['text'] 
    print('Sending to user...', response['text']) 

actions = { 
    'send': send, 
    'getPrice':getPrice 
} 

client = Wit(access_token="<token>", actions=actions) 

resp = client.message('what is the stock price of xyz') 
print('Result: ' + str(resp)) 

und das Ergebnis bin ich immer ist:

Result: { 
u 'entities': { 
    u 'search_query': [{ 
     u 'suggested': True, 
     u 'confidence': 0.578445451443443, 
     u 'type': u 'value', 
     u 'value': u 'stock of xyz' 
    }], 
    u 'item': [{ 
     u 'confidence': 0.9613219630126943, 
     u 'value': u 'xyz' 
    }] 
}, 
u 'msg_id': u '5ac1a450-7c5d-3190-8666-5d88a1884f94', 
u '_text': u 'what is the stock of xyz?' 
} 

Ich möchte der Bot den Preis anzuzeigen. Wie kann ich diese Aktionsfunktion aufrufen?

Antwort

0

können Sie tun

print resp['entities']['item'][0]['value'] 
+0

Es gibt 'Typeerror: Liste Indizes müssen ganze Zahlen sein, nicht – HunterrJ

+0

str' auch,' xyz' ist nicht das Ergebnis. Es ist derjenige, dessen Vorrat ich versuche zu bekommen. – HunterrJ

+0

Sorry, habe nicht gesehen, dass es eine Liste war. Habe aktualisiert. –

0

Statt:

print('Result: ' + str(resp)) 

Versuch:

stock = resp['entities']['item'][0]['value'] 
print('Price: {}'.format(getPrice(stock)))