我有问题,但不知道如何解决。我正在使用PHP和TDLib库来管理Telegram API,为此,我通过JSON接口进行异步调用:
https://core.telegram.org/tdlib/getting-started#tdlib-interface
Telegram API通过更新进行工作。程序接收电报更新,必须按接收顺序正确回答。为此,我有一个带有“ while”周期的脚本,该脚本对我来说是正确的。这是该算法的示例:
void *client = td_json_client_create();
// somehow share the client with other threads, which will be able to send requests via td_json_client_send
const double WAIT_TIMEOUT = 10.0; // seconds
int is_closed = 0; // should be set to 1, when updateAuthorizationState with authorizationStateClosed is received
while (!is_closed) {
const char *result = td_json_client_receive(client, WAIT_TIMEOUT);
if (result) {
// parse the result as JSON object and process it as an incoming update or an answer to a previously sent request
}
}
td_json_client_destroy(client);
好吧,问题在于,在任何给定时间,API的更新状态为“等待电话号码” ,此时应向用户询问电话号码。随后,在几个更新状态之后,Telegram将代码发送到该电话号码,因此当API的状态为“等待代码” 时,我的应用程序必须再次要求用户输入接收的代码。
为此,我编写了两种形式,一种形式要求电话号码,另一种形式要求代码。问题在于,表格直到脚本完成后才会显示,这无济于事。
我尝试根据情况使用 break 或 return 处理脚本的流程,这次我在正确的时间显示了表单,但是脚本的预期执行结束,在发送完表单后,就可以从头开始执行所有代码,然后重新启动变量。
无论如何,我希望我已经正确解释了,以便有人给我更好的建议,因为我真的迷路了。