# furhat
This is the Python Furhat Remote API, used to control the Furhat robot from Python. Find out more at https://docs.furhat.io/remote-api.

Note that the Furhat Remote API Skill needs to be running on the robot for it to work. 

This API is generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen). 
On top of this, some syntactic sugar has been added to make it more intuitive to use in Python. 

## Requirements.

Python 2.7 and 3.4+

## Installation 

You can install the package using pip:

```sh
pip install furhat
```
(you may need to run `pip` with root permission: `sudo pip install furhat`)

## Getting Started

```python
from furhat_remote_api import FurhatRemoteAPI

# Create an instance of the FurhatRemoteAPI class, providing the address of the robot or the SDK running the virtual robot
furhat = FurhatRemoteAPI("localhost")

# Get the voices on the robot
voices = furhat.get_voices()

# Set the voice of the robot
furhat.set_voice(name='Matthew')

# Say "Hi there!"
furhat.say(text="Hi there!")

# Play an audio file (with lipsync automatically added) 
furhat.say(url="https://www2.cs.uic.edu/~i101/SoundFiles/gettysburg10.wav", lipsync=True)

# Listen to user speech and return ASR result
result = furhat.listen()

# Perform a named gesture
furhat.gesture(name="BrowRaise")

# Perform a custom gesture
furhat.gesture(definition={
    "frames": [
        {
            "time": [
                0.33
            ],
            "params": {
                "BLINK_LEFT": 1.0
            }
        },
        {
            "time": [
                0.67
            ],
            "params": {
                "reset": True
            }
        }
    ],
    "class": "furhatos.gestures.Gesture"
    })

# Get the users detected by the robot 
users = furhat.get_users()

# Attend the user closest to the robot
furhat.attend(user="CLOSEST")

# Attend a user with a specific id
furhat.attend(userid="virtual-user-1")

# Attend a specific location (x,y,z)
furhat.attend(location="0.0,0.2,1.0")

# Set the LED lights
furhat.set_led(red=200, green=50, blue=50)
```

For a complete documentation of the API, see https://docs.furhat.io/remote-api
