2012-11-27 11:19:05 -05:00
|
|
|
#### Dependencies
|
|
|
|
|
2013-11-17 16:46:15 -05:00
|
|
|
The [Zulip API](https://zulip.com/api) Python bindings require the
|
|
|
|
following Python libraries:
|
2012-11-26 11:54:21 -05:00
|
|
|
|
|
|
|
* simplejson
|
2013-04-09 15:53:22 -04:00
|
|
|
* requests (version >= 0.12.1)
|
2012-11-27 11:19:05 -05:00
|
|
|
|
2013-01-31 15:58:34 -05:00
|
|
|
|
|
|
|
#### Installing
|
|
|
|
|
|
|
|
This package uses distutils, so you can just run:
|
|
|
|
|
|
|
|
python setup.py install
|
|
|
|
|
2012-11-27 11:19:05 -05:00
|
|
|
#### Using the API
|
|
|
|
|
|
|
|
For now, the only fully supported API operation is sending a message.
|
|
|
|
The other API queries work, but are under active development, so
|
|
|
|
please make sure we know you're using them so that we can notify you
|
|
|
|
as we make any changes to them.
|
|
|
|
|
|
|
|
The easiest way to use these API bindings is to base your tools off
|
2013-01-31 15:58:34 -05:00
|
|
|
of the example tools under examples/ in this distribution.
|
2012-11-27 11:19:05 -05:00
|
|
|
|
2013-08-07 11:36:46 -04:00
|
|
|
If you place your API key in the config file `~/.zuliprc` the Python
|
2013-02-05 16:00:00 -05:00
|
|
|
API bindings will automatically read it in. The format of the config
|
|
|
|
file is as follows:
|
2012-12-12 15:04:12 -05:00
|
|
|
|
|
|
|
[api]
|
|
|
|
key=<api key from the web interface>
|
|
|
|
email=<your email address>
|
|
|
|
|
2015-08-21 05:56:54 -04:00
|
|
|
If you are using Zulip Voyager, you should also add
|
2013-12-04 15:17:18 -05:00
|
|
|
|
2015-08-21 05:56:54 -04:00
|
|
|
site=<your Zulip Voyager server's URI>
|
2013-12-04 15:17:18 -05:00
|
|
|
|
2013-05-29 14:00:27 -04:00
|
|
|
Alternatively, you may explicitly use "--user" and "--api-key" in our
|
|
|
|
examples, which is especially useful if you are running several bots
|
2013-12-04 15:17:18 -05:00
|
|
|
which share a home directory. There is also a "--site" option for
|
2015-08-21 05:56:54 -04:00
|
|
|
setting the Zulip Voyager server on the command line.
|
2013-05-29 14:00:27 -04:00
|
|
|
|
2013-08-06 15:32:15 -04:00
|
|
|
You can obtain your Zulip API key, create bots, and manage bots all
|
|
|
|
from your Zulip [settings page](https://zulip.com/#settings).
|
2012-11-27 11:19:05 -05:00
|
|
|
|
|
|
|
A typical simple bot sending API messages will look as follows:
|
|
|
|
|
|
|
|
At the top of the file:
|
|
|
|
|
2013-08-06 15:32:15 -04:00
|
|
|
# Make sure the Zulip API distribution's root directory is in sys.path, then:
|
2013-08-07 11:51:03 -04:00
|
|
|
import zulip
|
2013-12-06 17:50:55 -05:00
|
|
|
zulip_client = zulip.Client(email="your-bot@example.com", client="MyTestClient/0.1")
|
2012-11-27 11:19:05 -05:00
|
|
|
|
|
|
|
When you want to send a message:
|
|
|
|
|
|
|
|
message = {
|
|
|
|
"type": "stream",
|
|
|
|
"to": ["support"],
|
|
|
|
"subject": "your subject",
|
|
|
|
"content": "your content",
|
|
|
|
}
|
2013-08-07 11:51:03 -04:00
|
|
|
zulip_client.send_message(message)
|
2012-11-27 11:19:05 -05:00
|
|
|
|
|
|
|
Additional examples:
|
|
|
|
|
2013-08-06 15:32:15 -04:00
|
|
|
client.send_message({'type': 'stream', 'content': 'Zulip rules!',
|
2012-11-27 11:19:05 -05:00
|
|
|
'subject': 'feedback', 'to': ['support']})
|
2013-08-06 15:32:15 -04:00
|
|
|
client.send_message({'type': 'private', 'content': 'Zulip rules!',
|
2012-11-27 11:19:05 -05:00
|
|
|
'to': ['user1@example.com', 'user2@example.com']})
|
|
|
|
|
|
|
|
send_message() returns a dict guaranteed to contain the following
|
|
|
|
keys: msg, result. For successful calls, result will be "success" and
|
|
|
|
msg will be the empty string. On error, result will be "error" and
|
|
|
|
msg will describe what went wrong.
|
2012-12-12 15:04:12 -05:00
|
|
|
|
2013-10-30 15:56:43 -04:00
|
|
|
#### Logging
|
|
|
|
The Zulip API comes with a ZulipStream class which can be used with the
|
|
|
|
logging module:
|
|
|
|
|
|
|
|
```
|
|
|
|
import zulip
|
|
|
|
import logging
|
|
|
|
stream = zulip.ZulipStream(type="stream", to=["support"], subject="your subject")
|
|
|
|
logger = logging.getLogger("your_logger")
|
|
|
|
logger.addHandler(logging.StreamHandler(stream))
|
|
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
logger.info("This is an INFO test.")
|
|
|
|
logger.debug("This is a DEBUG test.")
|
|
|
|
logger.warn("This is a WARN test.")
|
|
|
|
logger.error("This is a ERROR test.")
|
|
|
|
```
|
|
|
|
|
2012-12-12 15:04:12 -05:00
|
|
|
#### Sending messages
|
|
|
|
|
2013-08-07 11:52:53 -04:00
|
|
|
You can use the included `zulip-send` script to send messages via the
|
2012-12-12 15:04:12 -05:00
|
|
|
API directly from existing scripts.
|
|
|
|
|
2013-08-07 11:52:53 -04:00
|
|
|
zulip-send hamlet@example.com cordelia@example.com -m \
|
2012-12-12 15:04:12 -05:00
|
|
|
"Conscience doth make cowards of us all."
|
2013-05-29 14:00:27 -04:00
|
|
|
|
2013-08-07 11:36:46 -04:00
|
|
|
Alternatively, if you don't want to use your ~/.zuliprc file:
|
2013-05-29 14:00:27 -04:00
|
|
|
|
2013-08-07 11:52:53 -04:00
|
|
|
zulip-send --user shakespeare-bot@example.com \
|
2013-05-29 14:00:27 -04:00
|
|
|
--api-key a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5 \
|
|
|
|
hamlet@example.com cordelia@example.com -m \
|
|
|
|
"Conscience doth make cowards of us all."
|