mirror of https://github.com/zulip/zulip.git
api: Improve documentation for real-time-events API.
This commit is contained in:
parent
be3804f505
commit
9fc1458924
|
@ -1,4 +1,4 @@
|
||||||
# Get new events from an events queue
|
# Get events from a queue
|
||||||
|
|
||||||
`GET {{ api_url }}/v1/events`
|
`GET {{ api_url }}/v1/events`
|
||||||
|
|
||||||
|
@ -44,15 +44,6 @@ print(client.get_events(
|
||||||
queue_id="1515010080:4",
|
queue_id="1515010080:4",
|
||||||
last_event_id=-1
|
last_event_id=-1
|
||||||
))
|
))
|
||||||
|
|
||||||
# Print each message the user receives
|
|
||||||
# This is a blocking call that will run forever
|
|
||||||
client.call_on_each_message(lambda msg: sys.stdout.write(str(msg) + "\n"))
|
|
||||||
|
|
||||||
# Print every event relevant to the user
|
|
||||||
# This is a blocking call that will run forever
|
|
||||||
# This will never be reached unless you comment out the previous line
|
|
||||||
client.call_on_each_event(lambda msg: sys.stdout.write(str(msg) + "\n"))
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`call_on_each_message` and `call_on_each_event` will automatically register
|
`call_on_each_message` and `call_on_each_event` will automatically register
|
||||||
|
@ -103,10 +94,6 @@ even if you haven't registered a queue by explicitly requesting the
|
||||||
[the `{{ api_url}}/v1/register` endpoint](/api/register-queue) to this
|
[the `{{ api_url}}/v1/register` endpoint](/api/register-queue) to this
|
||||||
endpoint and a queue would be registered in the absence of a `queue_id`.
|
endpoint and a queue would be registered in the absence of a `queue_id`.
|
||||||
|
|
||||||
You may also pass in the following keyword arguments to `call_on_each_event`:
|
|
||||||
|
|
||||||
{generate_api_arguments_table|arguments.json|call_on_each_event}
|
|
||||||
|
|
||||||
## Response
|
## Response
|
||||||
|
|
||||||
#### Return values
|
#### Return values
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
# Real-time events API
|
||||||
|
|
||||||
|
Zulip's real-time events API lets you write software that reacts
|
||||||
|
immediately to events happening in Zulip. This API is what powers the
|
||||||
|
real-time updates in the Zulip web and mobile apps. As a result, the
|
||||||
|
events available via this API cover all changes to data displayed in
|
||||||
|
the Zulip product, from new messages to stream descriptions to
|
||||||
|
emoji reactions to changes in user or organization-level settings.
|
||||||
|
|
||||||
|
## Using the events API
|
||||||
|
|
||||||
|
The simplest way to use Zulip's real-time events API is by using
|
||||||
|
`call_on_each_event` from our Python bindings. You just need to write
|
||||||
|
a Python function (in the examples below, the `lambda`s) and pass it
|
||||||
|
into `call_on_each_event`; your function will be called whenever a new
|
||||||
|
event matching the specific `event_type` and/or `narrow` arguments
|
||||||
|
occurs in Zulip.
|
||||||
|
|
||||||
|
`call_on_each_event` takes care of all the potentially tricky details
|
||||||
|
of long-polling, error handling, exponential backoff in retries, etc.
|
||||||
|
It's cousin, `call_on_each_message`, provides an even simpler
|
||||||
|
interface for processing Zulip messages.
|
||||||
|
|
||||||
|
More complex applications (like a Zulip terminal client) may need to
|
||||||
|
instead use the raw [register](/api/register-queue) and
|
||||||
|
[events](/api/get-events-from-queue) endpoints.
|
||||||
|
|
||||||
|
## Usage examples
|
||||||
|
<div class="code-section" markdown="1">
|
||||||
|
<ul class="nav">
|
||||||
|
<li data-language="python">Python</li>
|
||||||
|
</ul>
|
||||||
|
<div class="blocks">
|
||||||
|
|
||||||
|
<div data-language="python" markdown="1">
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import zulip
|
||||||
|
|
||||||
|
# Download ~/zuliprc-dev from your dev server
|
||||||
|
client = zulip.Client(config_file="~/zuliprc-dev")
|
||||||
|
|
||||||
|
# Print every message the current user would receive
|
||||||
|
# This is a blocking call that will run forever
|
||||||
|
client.call_on_each_message(lambda msg: sys.stdout.write(str(msg) + "\n"))
|
||||||
|
|
||||||
|
# Print every event relevant to the user
|
||||||
|
# This is a blocking call that will run forever
|
||||||
|
client.call_on_each_event(lambda event: sys.stdout.write(str(event) + "\n"))
|
||||||
|
```
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
You may also pass in the following keyword arguments to `call_on_each_event`:
|
||||||
|
|
||||||
|
{generate_api_arguments_table|arguments.json|call_on_each_event}
|
||||||
|
|
||||||
|
## Deeper implementation details
|
||||||
|
|
||||||
|
If you're developing a Zulip client or otherwise want deeper details,
|
||||||
|
you can consult the
|
||||||
|
[developer documentation](https://zulip.readthedocs.io/en/latest/subsystems/events-system.html)
|
||||||
|
for how Zulip's event system works.
|
||||||
|
|
|
@ -20,8 +20,9 @@
|
||||||
* [Create a user](/api/create-user)
|
* [Create a user](/api/create-user)
|
||||||
* [Upload a file](/api/upload-file)
|
* [Upload a file](/api/upload-file)
|
||||||
|
|
||||||
#### Events
|
#### Real-time events
|
||||||
|
* [Real time events API](/api/real-time-events)
|
||||||
* [Register a queue](/api/register-queue)
|
* [Register a queue](/api/register-queue)
|
||||||
* [Get events from queue](/api/get-events-from-queue)
|
* [Get events from a queue](/api/get-events-from-queue)
|
||||||
* [Delete a queue](/api/delete-queue)
|
* [Delete a queue](/api/delete-queue)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue