When asterisk does WaitExten(), what packets from client?

I wrote simple AEL script.
But it doesn’t work for me.

Could you see some errors in followings?
Code’s goal is to connect 2 legs to A and B. On console, press “999” to enter context “callcenter”. Then asterisk prompt A’s number from console user. And dail A with its number. and so on…

And what packets are needed from client?

Thanks.

globals {
	SYSTEMSTATUS = 0;
	partya = 0;
	partyb = 0;
}

context default {
	999 => {
		Playback(please enter phone number to dial A);
		jump s@callcenter;
	}
}

context callcenter {
	s => {
		WaitExten();
	}
	_X! => {
		switch (${SYSTEMSTATUS}) {
			case 0: // initial status
				partya=${EXTEN};
				SYSTEMSTATUS=1;
				Playback(please enter phone number to dial B);
				WaitExten();
				break;
			case 1:
				partyb=${EXTEN};
				// dail A
				Dial(Phone/${partya}, 15);
				if (${DIALSTATUS}=ANSWER) {
					Dial(Phone/${partyb}, 15);
					if (${DIALSTATUS}=ANSWER) {
						Playback(tt-ok);
					} else {
						SYSTEMSTATUS=1;
						Playback(can not dial B);
						Hangup();
					}
				} else {
					SYSTEMSTATUS=1;
					Playback(can not dial A);
					Hangup();
				}
		}
	}
}

David.