February 20, 2016

play wechat voice via raspberry pi

UPDATE: if you are working with personal mp wechat, you can register a test account which is full privilege, or you can register a company account(choose team, not a real company)

UPDATE: mplayer plays better than omxplayer

You need a wechat certificated mp account, because you need a privilege only certificated account can acquire.

When I almost finished the project, I found I can’t acquire that privilege, so I can’t get the voice file from API.

config interface endpoint

Recommended encrypted mode, but you must implement encryption and decryption methods for communication with wechat API.

You must implement your endpoint first, because wechat will test your endpoint when you config that, wechat will visit you endpoint with some arguments: signature, timestamp, nonce, echostr, if you choose non-encrypt mode, you just return the echostr content, the test will be ok, otherwise, you must return a encrypted content.

process voice message

When a voice message sent to your mp account, wechat will call your endpoint, a POST request will be received, the request body is a XML message, you can use any tools you like to parsing that, I recommended python’s built-in xml library, because complie lxml is too slow in raspberry pi (I have waiting for 10+ minutes).

get voice file

The content sent to your endpoint included a media id, you can use this and your access token get voice file from API.

The access token is the certificate for calling API, you can acquire it with your app id and app secret, it will expired within 7200s, so you need store it and acquire it if it has expired.

If you have privilege to get media file (you’re luck), you will get the voice file, maybe it’s amr format, you need store it and play it with omxplayermplayer, it’s the built-in player for raspberry.

The Github: https://github.com/dawncold/raspsound

Powered by Hugo & Kiss.