Skip to main content

Schema Interactions

A bot can invoke the native Mixin Messenger windows through the Schema to implement functions, such as payment.

Sharing

mixin://send?category=CATEGORY&conversation=CONV_ID&data=DATA

The bot can not automatically share messages. If you specify conversation and it is the conversation of the user's current session, the confirmation box shown above will appear, the message will be sent after the user clicks the confirmation; if the conversation is not specified or is not the conversation of the current session, an interface where the user chooses which session to share with will show up.

Share text

const data = "hello world!"
window.open("mixin://send?category=text&data=" + encodeURIComponent(base64.encode(data)))

Share images

const data = '{"url":"https://mixin.one/assets/d9bb777b00f4210e107dd3580fe5bf1a.png"}'
window.open("mixin://send?category=image&data=" + encodeURIComponent(base64.encode(data)))

Share contacts

const data = '{"user_id":"773e5e77-4107-45c2-b648-8fc722ed77f5"}'
window.open("mixin://send?category=contact&data=" + encodeURIComponent(base64.encode(data)))

Share cards

const data = {
action: "http://192.168.31.156:3000/circles/9415878/posts/82",
app_id: "c1412f68-6152-40ad-a193-f7fadf9328a1",
description: "From debugCircle",
icon_url: "https://mixin-images.zeromesh.net/rl_7ufE4eezlZDDjsGz9apzvoa7ULeZLlyixbN04iiaGFng8JL9UtQVZwzHw4Bsh2_7m5WHVPwtWkLKOydGZ4Q=s256",
title: "Test"
};
window.open("mixin://send?category=app_card&data=" + encodeURIComponent(base64.encode(JSON.stringify(data))))

Share live shows

const data = '{"height":720,"thumb_url":"https://anchorpost.msstatic.com/cdnimage/anchorpost/1056/41/9771cb5a13901e0ed97514a9cf98e8_1663_1566469032.jpg?imageview/4/0/blur/1/format/webp","url":"https://1400293698.vod2.myqcloud.com/fd69ed6cvodcq1400293698/c1dde9e95285890807215641562/MramAAZccMIA.mp4","width":1280}'
window.open("mixin://send?category=live&data=" + encodeURIComponent(base64.encode(data)))

Share posts

const data = '## Markdown Intro\n> Markdown is a light weight markup language.'
window.open("mixin://send?category=post&data=" + encodeURIComponent(base64.encode(data)))

Payment

Invoke payment page

mixin://pay?recipient=&asset=&amount=&memo=&trace=
ParameterDescription
recipientReceivers user id.
assetAsset id.
amountTransfer amount.
memoOptional
traceOptional, UUID, prevent duplicate payment.

You can poll GET /transfers/trace/:traceid to see if there is a return value to determine whether the payment has been completed.

Invoke transfer page

mixin://transfer/:recipient_id

Transfer details interface

mixin://snapshots?trace=:traceid

or

mixin://snapshots/:snapshotid

Add withdrawal addresses

mixin://address?asset=&label=&destination=&tag=

tag is an optional parameter, other parameters are required.

Delete withdrawal addresses

mixin://address?asset=&action=delete&address=

Assign address id to address.

Withdrawal

mixin://withdrawal?address=&asset=&amount=&memo=&trace=

memo is an optional parameter, other parameters are required.

Others

popups user profile

mixin://users/:userid

popups bot profile

mixin://apps/:appid?action=open&key1=value1&key2=value2&key3=value3...

action is an optional parameter, the bot pop-up window will open in the absence of it, passing action=open will open the bot homepage; key1=value1&key2=value2&key3=value3... Parameters of any name or type can be passed when opening the bot homepage to facilitate the development of features like invitation codes, visitor tracking, etc. This feature is supported in Mixin Messenger 0.29.0 or above.

popus code info

mixin://codes/:code_id

Read the body of code and execute it.

open an conversation

mixin://conversations/:conversation_id?user=user_id

Open a conversation, user is optional, for user conversation only, if there's not conversation with the user, messenger will create the conversation first.