<p>我目前正在和Freeswitch及其<a href="http://wiki.freeswitch.org/wiki/Event_Socket_Library" rel="noreferrer">event socket library</a>(通过<a href="http://wiki.freeswitch.org/wiki/Mod_event_socket" rel="noreferrer">mod event socket</a>)一起工作。例如:</p>
<pre><code>from ESL import ESLconnection
cmd = 'uuid_kill %s' % active_call # active_call comes from a Django db and is unicode
con = ESLconnection(config.HOST, config.PORT, config.PWD)
if con.connected():
e = con.api(str(cmd))
else:
logging.error('Couldn\'t connect to Freeswitch Mod Event Socket')
</code></pre>
<p>如您所见,我必须用<code>str()</code>显式地转换<code>con.api()</code>的参数。如果不这样做,调用将在以下堆栈跟踪中结束:</p>
<pre><code>Traceback (most recent call last):
[...]
e = con.api(cmd)
File "/usr/lib64/python2.7/site-packages/ESL.py", line 87, in api
def api(*args): return apply(_ESL.ESLconnection_api, args)
TypeError: in method 'ESLconnection_api', argument 2 of type 'char const *'
</code></pre>
<p>我不明白这个类型错误:它是什么意思?<code>cmd</code>包含一个字符串,那么当我用<code>str(cmd)</code>进行转换时,它会修复它吗?<br/>
它是否与Freeswitch通过<a href="http://www.swig.org/" rel="noreferrer">SWIG</a>生成的python API相关?</p>